我在做一個簡單的客戶端服務器程序。當客戶端發送字符串「開始」時,我希望服務器開始執行一些代碼。現在,我讓客戶端發送一個包含消息「start」的數據報文件,服務器從數據包中獲取字節緩衝區,將其轉換爲字符串,然後將該字符串值與字符串文字「start」進行比較。很顯然,我做錯了什麼,因爲我的代碼不會進入的if(sentence.equals(start){ System.out.println("ok");}
如何正確比較從數據報包接收到的字符串值?
我的代碼for循環:
public static void main(String args[]) throws IOException{
byte[] receiveData;
byte[] sendData;
DatagramSocket serverSocket = new DatagramSocket(2014);
while(true){
receiveData = new byte[15];
DatagramPacket frame = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(frame);
InetAddress IPaddress = frame.getAddress();
System.out.println("INET " + IPaddress);
byte[] data;
int port = frame.getPort();
System.out.println("port " + port);
String sentence = new String(frame.getData());
String start = new String("start");
System.out.println("RECEIVED FROM CLIENT: " + sentence);
if(sentence.equals(start)){
System.out.println("ok");
}
}
}
所以'句子'顯然不是''開始''。當你打印出來時,你看到了什麼? – azurefrog
你確定它甚至收到任何東西? 'DatagramSocket.receive'將永遠阻塞,直到它收到一些東西。 –
是的,這是開始....這是打印出來,當我打印出來。這就是我困惑的原因。 – LePerMu