自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

手?jǐn)]實現(xiàn)UDP和TCP通信

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
UDP是一種面向無連接的協(xié)議,因此傳輸過程中不能保證數(shù)據(jù)的完整性。jdk提供了網(wǎng)絡(luò)通信包,在java.net包下提供了兩個類DatagramPacket和DatagramSocket來實現(xiàn)UDP通信。

[[336022]]

UDP

UDP是一種面向無連接的協(xié)議,因此傳輸過程中不能保證數(shù)據(jù)的完整性。jdk提供了網(wǎng)絡(luò)通信包,在java.net包下提供了兩個類DatagramPacket和DatagramSocket來實現(xiàn)UDP通信。這兩個類可以這樣理解,DatagramSocket是路,DatagramPacket路上裝有人的車。也就是DatagramSocket決定了通信目標(biāo),DatagramPacket則代表封裝好的數(shù)據(jù)。

UDP的特性決定了UDP協(xié)議的應(yīng)用場景,在我身邊最常見的應(yīng)用場景就是物聯(lián)網(wǎng)設(shè)備與服務(wù)端的通信。

UDPClient實現(xiàn)

  1. public class UDPClient { 
  2.     public static void main(String[] args) throws Exception { 
  3.            byte[] data = "我是客戶端,我發(fā)送了一條消息".getBytes(); 
  4.         InetAddress address = InetAddress.getByName("localhost"); 
  5.         DatagramPacket packet = new DatagramPacket(data,data.length,address,8888); 
  6.         DatagramSocket socket = new DatagramSocket(); 
  7.         socket.send(packet); 
  8.  
  9.         byte[] message = new byte[1024]; 
  10.         DatagramPacket packet1 = new DatagramPacket(message,message.length); 
  11.         socket.receive(packet1); 
  12.         String replyContent = new String(message,0,message.length); 
  13.         System.out.println("UDPClient 接收到了消息:"+replyContent); 
  14.         socket.close(); 
  15.     } 

UDPServer實現(xiàn)

  1. public class UDPServer { 
  2.     public static void main(String[] args) throws Exception { 
  3.          DatagramSocket socket = new DatagramSocket(8888); 
  4.         byte[] data = new byte[1024]; 
  5.         DatagramPacket packet = new DatagramPacket(data,data.length); 
  6.         socket.receive(packet); 
  7.         String message = new String(data,0,packet.getLength()); 
  8.         System.out.println("UDPServer 接收到了消息:"+message); 
  9.  
  10.         InetAddress address = packet.getAddress(); 
  11.         int port = packet.getPort(); 
  12.         byte[] replyContent = "我是服務(wù)端,我回復(fù)了一條消息".getBytes(); 
  13.         DatagramPacket packet1 = new DatagramPacket(replyContent, replyContent.length, address, port); 
  14.         socket.send(packet1); 
  15.         socket.close(); 
  16.     } 

TCP

TCP是一種面向連接的服務(wù),經(jīng)過三次握手建立連接,通過傳輸字節(jié)流的方式進(jìn)行通信。因此可以保證消息的完整性。同樣,在java.net包下也提供了兩個包Socket和ServerSocket來實現(xiàn)TCP通信。

TCPClient

  1. public class TCPClient { 
  2.  
  3.     public static void main(String[] args) throws Exception { 
  4.  
  5.         Socket socket = new Socket("localhost",8081); 
  6.         DataOutputStream out = new DataOutputStream(socket.getOutputStream()); 
  7.         String data = "我是客戶端,我發(fā)了一條消息"
  8.         out.writeUTF(data); 
  9.  
  10.         DataInputStream in = new DataInputStream(socket.getInputStream()); 
  11.         String message = in.readUTF(); 
  12.         System.out.println("TCPClient:"+message); 
  13.         socket.close(); 
  14.     } 

TCPServer

  1. public class TCPServer { 
  2.  
  3.     public static void main(String[] args) throws Exception{ 
  4.         ServerSocket serverSocket = new ServerSocket(8081); 
  5.         Socket socket = serverSocket.accept(); 
  6.         DataInputStream in = new DataInputStream(socket.getInputStream()); 
  7.         String message = in.readUTF(); 
  8.         System.out.println("TCPServer:"+message); 
  9.  
  10.         DataOutputStream out = new DataOutputStream(socket.getOutputStream()); 
  11.         out.writeUTF("我是服務(wù)器,我回復(fù)了一條消息"); 
  12.         socket.close(); 
  13.         serverSocket.close(); 
  14.     } 

本文轉(zhuǎn)載自微信公眾號「Java旅途」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Java旅途公眾號。

 

責(zé)任編輯:武曉燕 來源: Java旅途
相關(guān)推薦

2010-09-06 09:43:46

TCPUDPAndroid

2010-06-09 11:38:37

傳輸層通信協(xié)議

2020-07-28 08:38:10

TCPUDP協(xié)議

2022-09-02 12:13:22

TCPUDP場景

2019-12-31 20:41:39

IPUDPTCP

2010-06-09 14:36:44

TCP與UDP協(xié)議

2010-07-06 15:50:12

TCP和UDP協(xié)議

2013-05-27 10:48:16

TCPUDP傳輸協(xié)議

2018-09-06 10:48:51

TCPUDP協(xié)議

2010-06-09 14:42:21

UDP協(xié)議TCP協(xié)議

2020-12-04 06:35:20

TCPUDP阿里

2020-09-23 09:24:01

堆棧開發(fā)實現(xiàn)

2019-04-16 09:27:46

2023-10-24 15:22:09

TCPUDP

2019-03-26 14:07:39

TCPUDPDNS

2022-09-21 11:54:22

TCPUDP協(xié)議

2014-12-03 14:05:01

TCPUDP

2020-01-13 10:16:53

TCPUDP協(xié)議

2020-12-31 07:57:25

JVM操作代碼

2021-05-14 13:30:17

Mybatis分表插件
點贊
收藏

51CTO技術(shù)棧公眾號