可能重複:
Should I close a socket (TCPIP) after every transaction?插座應保持打開或拆除
可以說我有某種類型的使用套接字,工程進程間通信。
我的進程應該建立一個連接並保持打開狀態(每個客戶端有1個線程或類似的線程)在需要時發送數據;或者是一種更好的方法來簡單地建立連接,發送我希望的數據,關閉它並再次進入我的等待狀態?
這個問題的解決方法通常是什麼?
可能重複:
Should I close a socket (TCPIP) after every transaction?插座應保持打開或拆除
可以說我有某種類型的使用套接字,工程進程間通信。
我的進程應該建立一個連接並保持打開狀態(每個客戶端有1個線程或類似的線程)在需要時發送數據;或者是一種更好的方法來簡單地建立連接,發送我希望的數據,關閉它並再次進入我的等待狀態?
這個問題的解決方法通常是什麼?
本地套接字沒有太多開銷,因爲它們跳過了TCP/IP協議棧並且使用命名管道實現。保持插座打開和關閉不會有太大的區別。
只有當您專門打開一個Unix域套接字時,本地套接字纔會跳過TCP/IP堆棧 - 可用的地方。 – gby 2011-04-13 05:15:56
我問了同樣的問題,所有三個答覆都表示要開放。我跟着去了,它似乎在爲我工作。
任何資源,無論是文件,套接字,數據庫連接或硬件設備,需要時間和使用的處理器和內存來打開,因爲它有獲取資源,計算安全訪問,並做一些簿記。
每個消息之間的打開和關閉只會浪費CPU和內存資源。
長時間保持打開狀態也很危險,但您必須保持打開狀態並確定最佳超時值,以便在任何一端死亡時自動關閉它。
出於好奇,爲什麼在命名管道上套接字? – 2011-04-13 05:24:30
在我的情況下,我在Android應用程序和C#之間架起了一座橋樑,所以我不認爲管道是合適的(或可能的)? – 2011-04-13 05:31:23
進程間是指同一臺機器上不同進程間的通信,所以我問,如果他們在不同的機器上,那麼客戶機服務器或對等機器是正確的字。 – 2011-04-13 05:39:44