2014-01-19 107 views
0

使用TCP我正在用Java聊天它使用TCP協議。 我有一個客戶端和一個服務器端。聊天用Java

要發送消息給其他用戶,我已經通過我的客戶端發送信息到服務器,並且服務器有將它發送給另一個客戶端。

服務器同時擁有在線用戶的地址。當我發送私人消息時,服務器將查找IP和端口並從中創建一個套接字。 問題是它無法正常工作。

下面的代碼:

int portNumber = 4444; 
String host = "192.168.0.100」; 
Socket link; 
try { 
    link = new Socket(host, portNumber); 
    // Then I set to already created PrintWriter the outputstream 
    out = new PrintWriter(link.getOutputStream(), true); 
} catch (Exception e) {} 
// Unfortunately the server freezes here (it doesn't show anything). 

如何解決這個問題呢?我在哪裏錯了? 預先感謝您。

回答

1

你不應該創建一個新Socket發送消息。而是使用現有連接的套接字。

序列應該是以下:

  1. 客戶端A連接到服務器(服務器存儲的連接爲的SocketA)。
  2. 客戶端B連接到服務器(服務器存儲的連接作爲SocketB)。
  3. 服務器從SocketA讀取私人消息。消息被髮送到客戶端B.
  4. 服務器發現客戶端B.現有的插座這是SocketB。
  5. 服務器將消息發送到SocketB。