2014-01-29 48 views
0

我試圖建立一個聊天室類型的場景,其中服務器將持續監聽來自客戶端的任何數據包,同時能夠檢測服務器是否鍵入任何東西發送到客戶端Java服務器監聽客戶端並同時接收用戶輸入併發送到客戶端

這是我迄今爲止所做的,但我不能想到正確的方式來做到這一點,因爲現在我的代碼會卡住等待在的readLine()

for(;;){ 
    String input=null; 
    input = inFromUser.readLine(); 
    if (input.equals("exit")){ 
     break; 
    }else if (!input.equals(null)){ 
     byte[] newText = input.getBytes(); 
     sendPacket = new DatagramPacket(newText, newText.length, IPAddress, 9876);  
     serverSocket.send(sendPacket); 
     System.out.println("TO CLIENT(BOB): "+ new String(newText)); 
    }else{ 
     receivePacket = new DatagramPacket(receiveData, receiveData.length); 
     serverSocket.receive(receivePacket); 
     realSentence = Arrays.copyOf(receivePacket.getData(), receivePacket.getLength()); 
     String fromHost = new String(realSentence); 
     System.out.println("FROM CLIENT(BOB): " + fromHost); 
    } 
} 

所以我想知道的輸入反正是有監聽數據報,並同時能夠以文字閱讀上鍵入終端併發送給客戶端

回答

0

您將需要一個多線程程序。一個用於偵聽傳入數據包的線程,另一個用於等待用戶鍵入內容的線程。

+0

除了多線程之外,還有其他方法嗎? – user1958567

相關問題