老师,我想问一下,为什么我敲的程序可以运行,不会报错,但是到了发消息的时候到了第三句对方就会收不到,三句可能就只能收到一句的这种情况,请您帮我看一看是怎么回事
package cn.zl.udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws IOException {
System.out.println("--------=====客服=====--------");
Scanner sc = new Scanner(System.in);
//创建DatagramSocket对象
DatagramSocket ds = new DatagramSocket(9999);
while(true) {
//创建字节数组的数据包,用于接受数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
//接收数据
ds.receive(dp);
String st = new String(dp.getData(), 0, dp.getLength());
System.out.println("顾客:" + st);
//准备需要发送的内容
String s = sc.next();
byte[] buff = s.getBytes();
//创建DatagramPacket用于发送
DatagramPacket dp2 = new DatagramPacket(buff, buff.length, InetAddress.getByName("localhost"), 8888);
//发送
ds.send(dp2);
if("OK".equals(s)){
break;
}
}
ds.close();
}
}
package cn.zl.udp;
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws IOException {
System.out.println("----------=====顾客=====---------");
Scanner sc = new Scanner(System.in);
//创建DatagramSocket对象
DatagramSocket ds = new DatagramSocket(8888);
while(true) {
//准备发送的数据
byte[] buf = sc.next().getBytes();
//创建数据包
DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("localhost"), 9999);
//发送数据
ds.send(dp);
//创建一个数组用于接收数据
byte[] buf2 = new byte[1024];
//创建一个DatagramSocket用于接收数据
DatagramPacket dp2 = new DatagramPacket(buf2, buf2.length);
//接收
ds.receive(dp2);
String st = new String(dp2.getData(), 0, dp2.getLength());
System.out.println("人工:" + st);
if("OK".equals(sc.next())){
break;
}
}
ds.close();
}
}
运行的结果是这样的:


从第三句话开始就出现了收不到信息的情况