我正在使用UDP傳輸實現客戶端/服務器應用程序。這裏是我的我的代碼部分:DatagramPacket不傳送正確的消息
客戶:
InetAddress serverAddress = ...
int serverPort = ...
DatagramSocket socket = new DatagramSocket(9999);
...
String message = "<HELLO>";
byte[] outbuffer = new byte[1000];
outbuffer = message.getBytes();
DatagramPacket packet = new DatagramPacket(outbuffer, outbuffer.length, serverAddress, serverPort);
socket.send(this.packet);
服務器:
DatagramSocket serverSocket = new DatagramSocket(9876);
...
byte[] inbuffer = new byte[1000];
DatagramPacket packet = new DatagramPacket(inbuffer, inbuffer.length);
serverSocket.receive(packet);
String response = new String(packet.getData(), 0, packet.getLength());
System.out.println(response);
if("<HELLO>".equals(response)){
System.out.println("OK");
} else {
System.out.println("ERROR");
}
我的問題是:如果我打印的是從正在添加客戶端的響應字符串客戶端,一切都很好(「」)。 但由於某些原因,當我使用.equals或RegExp比較來自服務器的響應時,它會失敗!
可能與字符串編碼有關,但我不知道它在哪裏以及爲什麼會失敗。客戶端和服務器現在都在同一主機上運行,因此它可能與JVM差異無關。
當然,這是相關的編碼!非常感謝 ! – Kami