c# - 套接字对象生命周期

标签 c# sockets tcp lifecycle

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

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

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

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

最佳答案

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

关于c# - 套接字对象生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10242217/

相关文章:

c++ - 在 UNIX 中通过 recv/send 交换数据时如何正确使用缓冲区?

java - Socket收不到消息

javascript - 套接字远程端口代表什么?

TCP/RTMP 握手

c# - 如何在带有 Razor Pages 的 ASP.NET Core 2.1 中使用或处理并非为并发而设计的服务器端 SDK

c# - 什么是非托管对象?

python - 为同一个项目混合编程语言

c - Netfilter 内核模块拦截数据包并记录它们

c# - 通过将表名、列名和值作为参数从实体进行动态 Linq SearchFor

c# - 用MediatR替换服务层-值得这样做吗?