2012-03-30 75 views
1

我編碼,其中客戶端應用程序需要與服務器進行身份驗證登錄的應用程序和每半小時發送一個數據包和接收一些信息,然後睡半小時。套接字始終打開或只是在需要時打開?

請問正確的方法是開始插座每次發出和接收的數據包後關閉。還是應該讓它們始終保持開放並且連接在一起?

有會是100個+客戶端上運行simultanious,連接到服務器。

順便說一句發送的數據是非常重要的,它是發送和檢索MAX 5-10秒

回答

2

當然,最好是每次打開一個新的連接後,立即將其關閉。打開一個新的連接並不需要很長的時間,5-10秒的要求並不容易滿足這種方法。

2

空閒連接持續了半個多小時是很容易被一些路由器/防火牆被殺死。建立TCP/IP連接會帶來一些成本,但相比之下,每30分鐘5-10秒就可以忽略不計。

0

通常我離開我的TCP套接字開放,但要看是什麼服務器需要與這些連接做。在這種情況下,我可能會關閉它們。以下是我通常遵循的經驗法則:

如果您在客戶端每次向服務器發送數據時都進行身份驗證,那麼服務器可能很容易告訴「誰是誰」,您應該能夠關閉它每次。

如果您的客戶端只驗證第一次將數據發送到服務器,服務器需要維護一些關鍵客戶端連接的一個映射,那麼它可能會更好離開連接打開。