
接收端接收不到发送端的信息,我用DatagramSocket的getPort()方法试了一下,返回的是-1,API是这样解释的Returns -1 if the socket is not connected.
本人初学,查了好些资料都无法解决
发送端:
public class Client01 {
public static void main(String[] args) throws Exception{
System.out.println("发送端准备准备中");
//1. 使用DatagramSocket 指定端口,创建发送端
DatagramSocket client = new DatagramSocket(9999);
System.out.println(client.getPort());// 返回-1
//2. 准备数据,转化成字节数组
String msg = "今天27度";
byte[] data = msg.getBytes();
//3. 封装成DatagramPacket,需指定目的地
DatagramPacket p = new DatagramPacket(data, data.length,
new InetSocketAddress("localhost", 8888));
// 4. 发送包裹send(DatagramPacket p)
client.send(p);
//5. 释放资源
client.close();
}
}
接收端:
public class Sever01 {
public static void main(String[] args) throws Exception{
// 1. 使用DatagramSocket 指定端口,创建接收端
DatagramSocket server = new DatagramSocket(8888);
// 2. 准备容器 封装成DatagramPackets包裹
byte[] buf = new byte[1024*60];
DatagramPacket p = new DatagramPacket(buf, buf.length);
// 3. 阻塞式接受包裹receive(DatagramPacket p)
server.receive(p);
// 4. 分析数据
// byte[] getData()
byte[] data = p.getData();
// int getLength()
int len = p.getLength();
System.out.println(new String(data, 0, len));
// 5. 释放资源
server.close();
}
}