2017-07-31 50 views
-1

我已經開始使用Java基於套接字編寫服務器,並且我有一些問題。 當我有傳入的請求時,ServerSocket將Socket返回給我。然後我創建單獨的線程並在那裏使用這個新的套接字。 一些傳入的請求後,我有一些分離的線程和一些套接字。 所有套接字使用相同的輸入地址和端口。 問題 -Java服務器 - 在多線程模式下處理傳入套接字

服務器如何理解他必須給哪個線程輸入數據包?可以 請您提供一些關於書籍或鏈接的建議,我可以通過 瞭解服務器如何在低級別上工作?

服務器(例如Apache tomcat)如何處理傳入套接字? 據我所知,服務器有一個輸入包的輸入隊列。 這個隊列會影響服務器的速度嗎?我在哪裏可以讀到關於服務器工作的這種低級算法?

回答

0

SocketServer監聽特定的主機和端口。所謂的監聽套接字。只要服務器收到新的連接請求,服務器就會創建一個新的套接字並將其綁定到新的連接。

This link解釋過程更深入一點。

我會看看我是否找到其他好的閱讀材料。

0

Wernerson,非常感謝!良好的聯繫! 據我瞭解,我錯了,因爲我認爲套接字只是組合目的地IP +目的地端口。但套接字是組合目的地IP,目的地端口,源IP和源端口。而且,據我所知,當客戶端應用程序創建一些套接字(新的套接字(目的地IP,目的地端口)),那麼所有這些套接字將具有相同的目的IP +目的地端口,也許,相同的源IP,但他們將有不同的源端口。是?

+0

套接字是連接或端點的句柄。該連接或端點具有其擁有的任何屬性。監聽套接字是與連接套接字不同類型的事物的句柄。 TCP連接由源IP,源端口,目標IP和目標端口標識。您的線程具有引用TCP連接的句柄。 –