日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java网络编程udp_Java网络编程之UDP

發(fā)布時(shí)間:2024/10/8 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java网络编程udp_Java网络编程之UDP 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

UDP是User Datagram Protocol的簡(jiǎn)稱,中文名是用戶數(shù)據(jù)報(bào)協(xié)議,是OSI(Open System Interconnection,開(kāi)放式系統(tǒng)互聯(lián))參考模型中一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù),IETF RFC 768是UDP的正式規(guī)范。

UDP的特征:

不需要建立連接,將數(shù)據(jù)及相關(guān)的地址都封裝到數(shù)據(jù)包中

每個(gè)數(shù)據(jù)包的大小限制在64k

不需要建立連接,所以效率比較高,正因?yàn)椴恍枰B接所以是不可靠協(xié)議

Socket

Socket就是為網(wǎng)絡(luò)服務(wù)提供的一種機(jī)制

通信的兩端都有Socket

網(wǎng)絡(luò)通訊其實(shí)就是Socket通信

數(shù)據(jù)在兩個(gè)Socket間進(jìn)行傳輸

Java中使用UDP的步驟

發(fā)送端

建立UDP的socket服務(wù)

封裝數(shù)據(jù)包(指明接收端的IP地址,和接收端的端口號(hào))

通過(guò)socket的Send()發(fā)送數(shù)據(jù)

關(guān)閉服務(wù)

接收端

創(chuàng)建socket服務(wù)(需要指明監(jiān)視的端口號(hào),并且要和發(fā)送端指定的接受端口的端口號(hào)一致)

定義數(shù)據(jù)包用于接收數(shù)據(jù)(構(gòu)建DatagramPacket packet用于接收數(shù)據(jù))

通過(guò)socket的Receiver()接受數(shù)據(jù)

通過(guò)packet提供的相應(yīng)方法獲取發(fā)送端發(fā)送的信息

關(guān)閉服務(wù)

代碼案例如下

發(fā)送端

package cc.enfp.socket.udp;

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

import java.net.UnknownHostException;

/*

* UDP 發(fā)送端程序

*/

public class SendTest

{

public static void main(String[] args) throws IOException

{

/*

* 1、創(chuàng)建socket服務(wù)

*/

DatagramSocket socket = new DatagramSocket();

/*

* 2、提供相應(yīng)的發(fā)送=信息

*/

byte[] data = "開(kāi)啟udp之旅".getBytes();

//指明接收端的IP地址,和接收端的端口號(hào)

DatagramPacket packet = new DatagramPacket(data, data.length,

InetAddress.getLocalHost(), 10000);

/*

* 3、使用socket的發(fā)送方法,進(jìn)行數(shù)據(jù)的發(fā)送

*/

socket.send(packet);

/*

* 4、關(guān)閉連接,釋放資源

*/

socket.close();

}

}

接收端

package cc.enfp.socket.udp;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

/*

* UDP 接收端

*/

public class ReceiveTest

{

public static void main(String[] args) throws Exception

{

/*

* 1、創(chuàng)建socket服務(wù)

* 需要指明監(jiān)視的端口號(hào),并且要和發(fā)送端指定的接受端口的端口號(hào)一致

*/

DatagramSocket socket = new DatagramSocket(10000);

/*

* 2、構(gòu)建DatagramPacket packet用于接收數(shù)據(jù)

* packet只是為了接受數(shù)據(jù),所以只需要指明字節(jié)數(shù)組和長(zhǎng)度就可以

*/

byte[] data = new byte[1024];

DatagramPacket packet = new DatagramPacket(data, data.length);

/*

* 3、通過(guò)socket的receive方法將數(shù)據(jù)封裝到packet中

*/

socket.receive(packet);//該方法是阻塞

/*

* 4、通過(guò)packet提供的相應(yīng)方法獲取發(fā)送端發(fā)送的信息

*/

InetAddress ip = packet.getAddress();

System.out.println("發(fā)送端的IP: "+ip.getHostAddress());

//使用String的重載將返回的byte[]類(lèi)型的內(nèi)容轉(zhuǎn)換成字符串

String content = new String(packet.getData(), 0, packet.getLength());

System.out.println("發(fā)送端發(fā)送的內(nèi)容為: "+content);

/*

* 5.關(guān)閉連接,釋放資源

*/

socket.close();

}

}

總結(jié)

以上是生活随笔為你收集整理的java网络编程udp_Java网络编程之UDP的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。