代码之家  ›  专栏  ›  技术社区  ›  Chris Holmes

在C#中处理此TCP连接的首选方法是什么?

  •  0
  • Chris Holmes  · 技术社区  · 17 年前

    我有一个服务器应用程序(singleton,简单的.NET控制台应用程序),它与GlobalCache GC-100-12对话,以路由IR命令。本地网络上的各种.NET WinForm客户端连接到我的服务器应用程序并向其发送ASCII命令。服务器应用程序将这些ASCII命令排队,然后通过TCP连接将它们发送到GC-100-12。

    1. 为每个请求创建并打开一个新的TcpClient。请求完成后关闭TcpClient。

    2. 在服务器启动时创建并打开一个TcpClient,并使用keep-alive(如有必要)在服务器对象的生命周期内保持连接打开。

    目前我正在做#1,并将每次传输的结果打印到控制台。有时一些连接超时,命令无法路由,我想知道这是因为每次创建一个新TcpConnection的开销,还是因为其他原因。

    我可以看出#2更加复杂,因为如果连接确实断开了,就必须重新创建它,这将需要更多的代码来处理这种情况。

    我正在寻找关于这方面的一般性建议。我没有很多使用TcpClient类的经验。

    1 回复  |  直到 17 年前
        1
  •  3
  •   JoshBerke    17 年前

    我们有一个类似的案例,即向旧的基于PICK的系统打开telnet会话。我们发现每次请求传入时打开TCP连接的成本相当高,因此我们决定实现一个no-op例程来保持连接打开。它更为复杂,但只要您的端点不试图为许多客户服务,那么固定连接听起来是一个可行的解决方案。

    推荐文章