【问题标题】:Socket object life cycle套接字对象生命周期
【发布时间】:2012-05-01 19:15:15
【问题描述】:

我正在使用Socket 对象通过 tcp 向其他程序发送命令。

我想知道什么是更好的决定:

  1. 在每个命令发送/接收会话中初始化 Socket 对象 然后关闭它。
  2. 或者初始化一个全局的Socket对象,用它来发送所有 命令/接收响应并在程序关闭时关闭。

所以问题是我应该多久关闭一次“相同”操作的套接字对象?

【问题讨论】:

  • 视情况而定,但第一个是正确的方法,频率要低得多。不过这里的信息太少了。
  • @Jon ,抱歉,添加了更精确的问题。只是想知道什么更好,收到响应后关闭socket,或者离开对象,重用它以获得更多响应并进行更多发送操作。
  • 您是在尝试同步还是异步方法?无论如何,我会接受您的第一个建议,就资源处理而言,这似乎是一种更清洁的方式。
  • @peer ,异步的。所以,我会在收到回复后关闭套接字。谢谢。

标签: c# sockets tcp lifecycle


【解决方案1】:

这取决于您的应用程序要求。例如 假设您正在编写一个 smtp 客户端,那么服务器将永远不允许您连接,这也是请求/响应类型的协议(例如,您发送请求以检查任何邮件并接收它的响应)然后您必须关闭您的套接字一次您的请求已完成。 但是如果您正在编写一些类似聊天的应用程序,那么您可能不想关闭您的套接字。因为聊天应用服务器可以随时向您发送服务器收到的其他聊天消息,所以在这种情况下,服务器也会在没有您请求的情况下推送您的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多