UDP通信(接收端、发送端)

1、发送Send

  • 创建DatagramSocket, 随机端口号
  • 创建DatagramPacket, 指定数据, 长度, 地址, 端口
  • 使用DatagramSocket发送DatagramPacket
  • 关闭DatagramSocket

2、接收端Receive

  • 创建DatagramSocket, 指定端口号
  • 创建DatagramPacket, 指定数组, 长度
  • 使用DatagramSocket接收DatagramPacket
  • 关闭DatagramSocket
  • 从DatagramPacket中获取数据

3、接收方获取ip和端口号

  • String ip = packet.getAddress().getHostAddress();
  • int port = packet.getPort();

4、发送端代码实现:

public static void main(String[] args) throws Exception {
	//确定要发送的内容
	String str = "你愿意跟我一起去吃麻辣烫吗?";
	//创建发送端Socket 可以ip ,会提供一个随机的
	DatagramSocket socket = new DatagramSocket();
	//创建装载数据的包  要指明IP地址,端口号, 
	DatagramPacket packet = new DatagramPacket(str.getBytes(), str.getBytes().length, 
			InetAddress.getByName("127.0.0.1"), 6666);
	//发送数据
	socket.send(packet);
	//关闭socket
	socket.close();
}

5、接收端代码实现:

public static void main(String[] args) throws Exception {
	//创建接收端Socket,必须指定端口,不然接收不到
	DatagramSocket socket = new DatagramSocket(6666);
	//创建装载数据的包
	DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);
	//接收数据, 阻塞方法
	socket.receive(packet);
	//获取接收到的数据
	byte[] bs = packet.getData();
	//获取接收到的有效数据的长度
	int len = packet.getLength();
	System.out.println(new String(bs,0,len));
	//获取对方法的端口号
	System.out.println(packet.getPort());
	//获取对方的ip地址
	System.out.println(packet.getAddress());
	//关闭socket
	socket.close();
}

6、UDP传输优化(可发送多条数据)

public static void main(String[] args) throws Exception {
	//从键盘录入数据
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	
	//创建发送端Socket 可以ip ,会提供一个随机的
	DatagramSocket socket = new DatagramSocket();
	//循环接收数据
	while(true){
		String str = br.readLine();
		//创建装载数据的包  要指明IP地址,端口号, 
		DatagramPacket packet = new DatagramPacket(str.getBytes(), str.getBytes().length, 
				InetAddress.getByName("127.0.0.1"), 6666);
		
		//发送数据
		socket.send(packet);
		if("结束".equals(str)){
			break;
		}
	}

	//关闭socket
	socket.close();
}

猜你喜欢

转载自blog.csdn.net/moxiaomo0804/article/details/89705448
今日推荐