/定义一个线程类,内部类,用于接收消息 class RecieverThread extends Thread{ @Override public void run() { byte[] data=new byte[1024]; //需要一个循环一直接受消息 while(true){ //创建包裹对象 DatagramPacket packet=new DatagramPacket(data,data.length); //等待接收消息 try { //等待接收消息,会阻塞 socket.receive(packet); //如果接收到消息,上面阻塞会解除 int len= packet.getLength(); String msg=new String(data,0,len); System.out.println("收到消息了:"+msg); //接收的消息添加到消息面板 msgAddToMsgPanel(msg,FlowLayout.LEFT); } catch (IOException e) { throw new RuntimeException(e); } } } 重点解释socket.receive(packet);
时间: 2024-03-11 12:44:16 浏览: 45
这是一个线程类(Thread
`socket.receive(packet)` 方法是用于接收网络数据包的,它会一直阻塞直到有数据包到来。在这个方法执行之后,如果有数据包到来,它会将数据包的内容读取到 `packet` 对象中。因此我们可以通过 `packet.getData()` 方法获取到数据包的字节数组,通过 `packet.getLength()` 方法获取到数据包的长度。接着将字节数组转换成字符串,即可得到接收到的消息内容。
阅读全文