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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java外部类调用内部类_java中的外
- 下一篇: java arrays方法_Java工具