2012-04-20 106 views
1

我使用Socket對象通過tcp向其他程序發送命令。套接字對象生命週期

我不知道什麼是更好的決定:

  1. 要在每一個命令發送初始化Socket對象/接收會話 然後將其關閉。
  2. 或者初始化一個全局的Socket對象,用它發送所有的 命令/接收響應並關閉程序關閉。

所以問題是多久我應該關閉套接字對象的「相同」的操作?

+0

這取決於,但第一個是正確的方法少得多。這裏的信息太少了。 – Jon 2012-04-20 07:49:34

+0

@Jon,對不起,添加了更精確的問題。只是想知道什麼更好,在收到響應後關閉套接字,或者離開對象,重用它以獲得更多響應並執行更多的發送操作。 – 0x49D1 2012-04-20 07:52:40

+0

你正在嘗試一種同步或異步方法嗎?無論如何,我會採取你的第一個建議,它似乎是一個在資源處理方面更乾淨的方式。 – peer 2012-04-20 08:02:52

回答

2

這取決於你的應用需求。例如 假設你正在寫一個smtp客戶端,那麼服務器將不允許你永遠連接,這也是請求/響應類型的協議(例如你發送請求來檢查任何郵件並接收它的響應),那麼你必須關閉你的套接字一旦你的請求完成。 但如果您正在編寫一些類似應用程序的聊天,那麼您可能不想關閉套接字。因爲聊天應用程序服務器可以隨時向服務器發送其他人的聊天消息,所以在這種情況下,服務器也會在沒有您的請求的情況下推送您的數據。