Java UDP通信示例

本文详细介绍Java中使用UDP协议进行通信的全过程,包括Server端与Client端的实现方式。通过实例展示了如何初始化DatagramSocket,创建DatagramPacket进行数据收发,并正确关闭socket,是Java网络编程的良好参考。
摘要由CSDN通过智能技术生成

Java UDP通信示例

Server端

  1. 初始化DatagramSocket:port和ip
  2. 用buffer初始化DatagramPacket
  3. 接收DatagramPacket
  4. 关闭socket
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 UDPServer {
   public static void main(String[] args) {
   	DatagramSocket socket = null;

   	try {
   		try {
   			socket = new DatagramSocket(8080, InetAddress.getByName("127.0.0.1"));
   		} catch (UnknownHostException e) {
   			e.printStackTrace();
   		}
   	} catch (SocketException e) {
   		e.printStackTrace();
   	}

   	// 创建接收缓冲区
   	byte[] buffer = new byte[1024];
   	// 创建接收数据包
   	DatagramPacket receivePacket = new DatagramPacket(buffer, buffer.length);
   	// 接收数据
   	try {
   		socket.receive(receivePacket);
   	} catch (IOException e) {
   		e.printStackTrace();
   	} finally {
   		if (socket != null) {
   			socket.close();
   		}
   	}
   	// 解析消息并打印数据
   	String string = new String(receivePacket.getData(), 0, receivePacket.getLength());
   	System.out.println(string);
   }
}

Client

  1. 初始化DatagramSocket:port和ip
  2. 用buffer初始化DatagramPacket
  3. 发送DatagramPacket
  4. 关闭socket
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 UDPClient {
	public static void main(String[] args) {
		DatagramSocket socket = null;
		try {
			socket = new DatagramSocket();
		} catch (SocketException e) {
			e.printStackTrace();
		}

		try {
			InetAddress ip = InetAddress.getByName("127.0.0.1");
			int port = 8080;
			byte[] buffer = "Hello world".getBytes();
			// 创建发送类型的数据包,这个数据包包含了要发往的ip地址和端口
			DatagramPacket packet = new DatagramPacket(buffer, buffer.length, ip, port);
			try {
				socket.send(packet);
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				if (socket != null) {
					socket.close();
				}
			}
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}

	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值