在Socket以UDP方式进行通信时,客户端的socket每次发送信息时的端口是随机不固定的。这样的话服务器每次收到客户端的信息进行响应时,必须先从接受的数据报中获取客户端的地址和端口。于是就想能不能把客户端的端口绑定一个固定的值,首先想到的就是在jdk文档中查找,结果当然是可以的。
1. 先来看看不绑定情况下的代码:
--服务器代码:
public class SocketReceiver {
public static String host = "127.0.0.1";
public static void main(String[] args) {
System.out.println("welcome to SocketReceiver");
try {
InetAddress address = InetAddress.getByName(host);
int port = 44300;
// 创建用于接收信息的socket
DatagramSocket socketRecv = new DatagramSocket(port, address);
byte buf[] = new byte[1024];
DatagramPacket recvPacket = new DatagramPacket(buf, buf.length);
socketRecv.receive(recvPacket);
String recvMsg = new String(buf, 0, recvPacket.getLength());
Sy