在我的Android应用程序中,我使用DatagramSockets将消息发送到服务器,如下所示:
InetAddress address = InetAddress.getByName(host);
byte[] byteMessage = (" " + message + "\r\n##!!##").getBytes();
DatagramPacket packet = new DatagramPacket(byteMessage, byteMessage.length, address, port);
DatagramSocket socket = new DatagramSocket();
try
{
socket.send(packet);
}
finally
{
socket.close();
}
但是只发送每个第N-1个数据包。 这意味着如果我发送1个数据包,则不会发送任如果我发送第二个,第一个发送。如果我发送第三个,第二个发送等等。
修改 所以在第一次评论后我a)摆脱了无用的throw语句b)尝试在发送后没有关闭套接字。它没有帮助。 以此作为澄清的示例:以下代码完美运行,我收到包服务器端。但它显然不是一个漂亮的解决方案......
InetAddress address = InetAddress.getByName(host);
byte[] byteMessage = (" " + message + "\r\n##!!##").getBytes();
DatagramPacket packet = new DatagramPacket(byteMessage, byteMessage.length, address, port);
DatagramSocket socket = new DatagramSocket();
try
{
socket.send(packet);
String emptyMessage = " ";
socket.send(new DatagramPacket(emptyMessage.getBytes(), emptyMessage.getBytes().length, address, port));
}
finally
{
socket.close();
}
之后我只是发送第二条“空”消息。我首先尝试发送一个空字节数组,但不工作。