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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

發布時間:2024/10/8 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java网络编程udp_Java网络编程之UDP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

UDP是User Datagram Protocol的簡稱,中文名是用戶數據報協議,是OSI(Open System Interconnection,開放式系統互聯)參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768是UDP的正式規范。

UDP的特征:

不需要建立連接,將數據及相關的地址都封裝到數據包中

每個數據包的大小限制在64k

不需要建立連接,所以效率比較高,正因為不需要連接所以是不可靠協議

Socket

Socket就是為網絡服務提供的一種機制

通信的兩端都有Socket

網絡通訊其實就是Socket通信

數據在兩個Socket間進行傳輸

Java中使用UDP的步驟

發送端

建立UDP的socket服務

封裝數據包(指明接收端的IP地址,和接收端的端口號)

通過socket的Send()發送數據

關閉服務

接收端

創建socket服務(需要指明監視的端口號,并且要和發送端指定的接受端口的端口號一致)

定義數據包用于接收數據(構建DatagramPacket packet用于接收數據)

通過socket的Receiver()接受數據

通過packet提供的相應方法獲取發送端發送的信息

關閉服務

代碼案例如下

發送端

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 發送端程序

*/

public class SendTest

{

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

{

/*

* 1、創建socket服務

*/

DatagramSocket socket = new DatagramSocket();

/*

* 2、提供相應的發送=信息

*/

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

//指明接收端的IP地址,和接收端的端口號

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

InetAddress.getLocalHost(), 10000);

/*

* 3、使用socket的發送方法,進行數據的發送

*/

socket.send(packet);

/*

* 4、關閉連接,釋放資源

*/

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、創建socket服務

* 需要指明監視的端口號,并且要和發送端指定的接受端口的端口號一致

*/

DatagramSocket socket = new DatagramSocket(10000);

/*

* 2、構建DatagramPacket packet用于接收數據

* packet只是為了接受數據,所以只需要指明字節數組和長度就可以

*/

byte[] data = new byte[1024];

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

/*

* 3、通過socket的receive方法將數據封裝到packet中

*/

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

/*

* 4、通過packet提供的相應方法獲取發送端發送的信息

*/

InetAddress ip = packet.getAddress();

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

//使用String的重載將返回的byte[]類型的內容轉換成字符串

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

System.out.println("發送端發送的內容為: "+content);

/*

* 5.關閉連接,釋放資源

*/

socket.close();

}

}

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。