java udp データ ネットワーク プログラミングを送信する方法

コンセプト

UDP と TCP は 2 つの一般的なネットワーク伝送プロトコルです。UDP は高速であるという特徴がありますが、安定性が低く、データが失われる可能性があります。TCP データは非常に安定していますが、比較的低速です。

UDPプロトコル送信データ例

送信者を作成する

package com.test.udpTest;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class UdpSend {
    
    

	/**
	 * @param args
	 */
	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub

		//发送端
		try {
    
    
			
			
			//1.创建一个socket(码头)
			DatagramSocket datagramSocket=new DatagramSocket();
			
			//2.创建packet (集装箱)
			byte[] data="你好,通信技术".getBytes();
			int length=data.length;
			InetAddress ip=InetAddress.getByName("192.168.8.4");
			int port=8888; // 0-1023端口号一般是常用的知名的程序的端口号    65535以内
			
			//DatagramPacket(byte[] buf, int length, InetAddress address, int port) 
			
			DatagramPacket datagramPacket=new DatagramPacket(data, length, ip, port);
			
			//3.发送
			datagramSocket.send(datagramPacket);
			
			//4.关闭码头
			datagramSocket.close();
			
			
			
			
			
		} catch (SocketException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnknownHostException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
		
	}

}

受信機を作成する

package com.test.udpTest;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UdpReceive {
    
    

	/**
	 * @param args
	 */
	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub

		//1.创建码头 接收端的码头需要添加端口号,发送端端口号要跟接收端的端口号一致
		try {
    
    
			DatagramSocket datagramSocket=new DatagramSocket(8888);
			
			//2.创建packet 用来接收传递过来的数据
			byte[] data=new byte[1024];
			int length=data.length;
			DatagramPacket datagramPacket=new DatagramPacket(data, length);
			
			//3.接收数据
			datagramSocket.receive(datagramPacket);
			
		    String ip=datagramPacket.getAddress().getHostAddress();
		    
		    String msg=new String(data);
		    
		    System.out.println("接收到来自"+ip+"的信息:"+msg);
		    
		    //4.关闭码头
		    datagramSocket.close();
			
		} catch (SocketException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

}

受信側を先に実行し、次に送信側を実行すると、図に示すように、受信側でデータが正常に受信されました。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/Rockandrollman/article/details/130495069