java基础篇---网络编程(UDP程序设计)
UDP程序設(shè)計
在TCP的索引操作都必須建立可靠地連接,這樣一來肯定會浪費大量的系統(tǒng)性能,為了減少這種開銷,在網(wǎng)絡(luò)中又提供了另外一種傳輸協(xié)議---UDP,不可靠的連接,這種協(xié)議在各個聊天工具中被廣泛的應(yīng)用。
咋UDP開發(fā)中使用DatagramPacket包裝一條要發(fā)送的信息,之后使用DatagramSocket用于完成信息的發(fā)送操作。
例如:現(xiàn)在使用聊天工具進行聊天的功能,那么A的發(fā)送的信息B不一定可以接受的到,因為使用的是UDP的協(xié)議。
UDP中主要是使用數(shù)據(jù)報協(xié)議發(fā)送的。
DatagramPacket中的方法
是包含真實的是要發(fā)送的信息,稱為數(shù)據(jù)報
所有的數(shù)據(jù)報使用DatagramPacket進行發(fā)送的操作
DatagramSocket
那么如果要想運行程序,則在數(shù)據(jù)報的開發(fā)中,應(yīng)該首先保證客戶端要打開
import java.net.DatagramPacket ; import java.net.DatagramSocket ;public class UDPClient{public static void main(String args[]) throws Exception{ // 所有異常拋出DatagramSocket ds = null ; // 定義接收數(shù)據(jù)報的對象byte[] buf = new byte[1024] ; // 開辟空間,以接收數(shù)據(jù)DatagramPacket dp = null ; // 聲明DatagramPacket對象ds = new DatagramSocket(9000) ; // 客戶端在9000端口上等待服務(wù)器發(fā)送信息dp = new DatagramPacket(buf,1024) ; // 所有的信息使用buf保存ds.receive(dp) ; // 接收數(shù)據(jù)String str = new String(dp.getData(),0,dp.getLength()) + "from " + dp.getAddress().getHostAddress() + ":" + dp.getPort() ;System.out.println(str) ; // 輸出內(nèi)容 } };要進一步等待服務(wù)器發(fā)送信息
import java.net.DatagramPacket ; import java.net.DatagramSocket ; import java.net.InetAddress ;public class UDPServer{public static void main(String args[]) throws Exception{ // 所有異常拋出DatagramSocket ds = null ; // 定義發(fā)送數(shù)據(jù)報的對象DatagramPacket dp = null ; // 聲明DatagramPacket對象ds = new DatagramSocket(3000) ; // 服務(wù)端在3000端口上等待服務(wù)器發(fā)送信息\String str = "hello World!!!" ;dp = new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("localhost"),9000) ; // 所有的信息使用buf保存System.out.println("發(fā)送信息。") ;ds.send(dp); // 發(fā)送信息出去 ds.close() ;} };UDP 屬于不可靠的連接協(xié)議,服務(wù)端發(fā)送的信息客戶端未必接收的到,采用的是數(shù)據(jù)報的協(xié)議發(fā)送。
?
轉(zhuǎn)載于:https://www.cnblogs.com/oumyye/p/4271198.html
總結(jié)
以上是生活随笔為你收集整理的java基础篇---网络编程(UDP程序设计)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018最好申请的信用卡介绍 最好下卡的
- 下一篇: 快速排序和折半查找