2016-04-19 37 views
0

我必須編寫一個程序,其中客戶端發送服務器的某個號碼並等待其響應,其他的隨機數。它工作無限發送號碼和等待響應等等...高效地處理服務器中的很多套接字

我想寫一個服務器,獲得大量的連接(並創建套接字)我怎麼能以有效的方式做到這一點(沒有創建線程到每個套接字創建)?

爲每個請求和響應打開和關閉套接字是否更好?

有沒有一種方式來發送答案通過套接字的時候,我不知道哪一個是正確的插座,但我知道,所有的插座從同一客戶端計算機啓動時,我知道客戶 港源(我想製作插槽陣列)

+0

你可以使用一個代理與界隊列重用線程,因爲他們成爲可用 – Palcente

+0

你怎麼樣儘量先獲得標準的線程每個插座的方式工作,對未來感到擔心了。當你對套接字知之甚少時,專注於性能問題並不是一個好主意。 – Kayaman

回答

0

我該如何以有效的方式做到這一點(沒有爲每個創建的套接字創建線程)?

你假設沒有證據證明每個套接字的新線程是低效的。事實並非如此。

爲每個請求和響應打開和關閉套接字是更好嗎?

否。查看HTTP的歷史記錄。 1.0和1.1之間的主要變化是引入了持久連接,而不管服務器端體系結構如何。

有沒有一種方式來發送答案通過套接字的時候,我不知道哪一個是正確的插座

我不明白怎麼情況可能會出現可能。答案只有在與特定套接字關聯的特定會話的上下文中才有意義。如果你不保留你應該的信息。這只是一個數據結構問題。

但我知道,所有的插座從同一客戶端計算機啓動時,我知道客戶端的端口源(我想過讓插座陣列)

如果你還記得的源端口,你可以記住插座本身。再次,這只是一個數據結構問題。而且沒有必要假定/約束所有連接來自同一個客戶端。除非該客戶端是多線程的,否則根本不需要多個連接。

+0

我的意思是我從同一臺電腦運行多個客戶端程序 –

+0

明白了,謝謝 –