我正在从客户端向服务器发送两个数据包。我遇到的问题是,在服务器上读取的数据使两个字符串对于发送的最长字符串具有相同的长度。例如:
如果字符串 1 为:1234
字符串 2 为:abcdefghi
服务器会读取
1234efghi
abcdefghi
它应该只显示
1234
abcdefghi
我的代码是:
byte[] toSendUser = new byte[1024];
byte[] toSendPass = new byte[1024];
String name = "1234";
String password = "abcdefghi";
toSendUser = name.getBytes();
toSendPass = password.getBytes();
DatagramPacket packSend = new DatagramPacket (toSendUser, toSendUser.length, ipConn, 9876);
connection.send(packSend);
DatagramPacket packSendtwo = new DatagramPacket (toSendPass, toSendPass.length, ipConn, 9876);
connection.send(packSendtwo);
这可能是服务器问题还是我的客户端代码错误?
最佳答案
Java 中的
DatagramPackets
不断缩小到迄今为止收到的最小数据包的大小。您必须为每个 receive() 创建一个新的长度,
,或者至少每次在下一个 receive() 之前重置长度。
关于java - 服务器未正确读取发送的 UDP 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22751659/