在写一个程序有用到UDP,是第一次用到,遇到问题:
客户端发送到服务端的程序:
//发送端口号、要接收信息人的名称、和信息给服务器
String sendStr = receivePort + "port#split#name" +friendName + "name#split#text" +sendMesText.getText();
//打印数据查看
System.out.println("inchatframe: sendStr: " + sendStr);

byte[] sendBytes = sendStr.getBytes();

sendPacket = new DatagramPacket(sendBytes, sendStr.length(), InetAddress.getByName(InetAddress.getLocalHost().getHostAddress()), 2346);
sendSocket = new DatagramSocket();
sendSocket.send(sendPacket);

sendSocket.close();
服务端发送到另一客户端的程序: byte buf[] = new byte[10240];
for(int i=0; i<1024; i++) buf[i] = ' ';
receivePacket = new DatagramPacket(buf, buf.length);
receiveSocket = new DatagramSocket(2346);

receiveSocket.receive(receivePacket); //接收数据,分隔出第一个字符串port用来给下面的sendPacket初始化
String receiveStr = new String(receivePacket.getData()).trim();

String[] strs = receiveStr.split("port#split#name"); int port = Integer.parseInt(strs[0]);
String sendStr = strs[1];
//打印数据查看
System.out.println("inServer:receiveStr: " + receiveStr); byte[] sendBytes = sendStr.getBytes();
//发送要接收信息人的名称、和信息给另一客户端
sendPacket = new DatagramPacket(sendBytes, sendStr.length(), InetAddress.getByName(InetAddress.getLocalHost().getHostAddress()), port);
sendSocket = new DatagramSocket();
sendSocket.send(sendPacket); receiveSocket.close();
        sendSocket.close();
另一客户端接收服务端的程序:
byte buf[] = new byte[102400];
for (int i = 0; i < 10240; i++)
buf[i] = ' ';
receivePacket = new DatagramPacket(buf, buf.length);
try {
receiveSocket = new DatagramSocket(receivePort);
} catch (SocketException e1) {
e1.printStackTrace();
} try {
while (close) {


receiveSocket.receive(receivePacket); String receiveStr = new String(receivePacket.getData()).trim();
//打印数据查看
System.out.println("inwhile-receiveStr: " + receiveStr);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}        receiveSocket.close();从打印的结果看出:第一个程序发送过去的数据是:7721port#split#name林明清name#split#textabcdefg
第二个程序收到的数据却是:7721port#split#name林明清name#split#textabcd
第三个程序收到的数据是:林明清name#split#texta
每传一次就丢失三个字符,是什么原因,帮我看看,我很急。