2014-02-21 102 views
0

所以我想創建一個服務器/客戶端在Java中,以提高我的技能。但是..出於某種原因,儘管每次服務器接受連接時都會創建一個新線程,但事情並不奏效,只有一個客戶端正在工作。
這裏是代碼:Java多線程服務器不工作

while (true) { 
      Socket client = null; 
      client = server.accept(); 
      new Thread(new Server(client)).run(); 
     } 

而且我不知道爲什麼它的發生。我爲此使用了一個教程,但事情並不奏效。 謝謝!

+0

什麼教程?顯示你的來源。 –

+0

而不是運行那裏必須有開始,你需要定義運行方法。 – Kick

回答

0

所以,這是問題的解決方案。

「那麼究竟是什麼啓動和運行方法之間的區別?主要區別 的是,當程序調用start()方法一個新的線程被創建和內部運行 代碼()方法是在新的線程中執行,而如果你調用 run()方法直接沒有新的線程被創建和代碼中的run() 將執行當前線程。 從http://javarevisited.blogspot.com/2012/03/difference-between-start-and-run-method.html

更改。運行()函數。開始引用()解決了這個問題 享受。

0

Kryonet是一個非常好的Java庫,它爲使用NIO的高效的TCP和UDP客戶端/服務器網絡通信提供了一個乾淨而簡單的API。

這將使您的網絡編程工作變得更容易,您可以更好地瞭解如何編寫客戶端和服務器端代碼。

我建議你先嚐試一下使用這個庫的網絡編程技巧,然後嘗試實現你自己的。