何时为客户机-服务器应用程序使用不同的端口

本文关键字:客户机 服务器 应用程序 何时 | 更新日期: 2023-09-27 18:03:33

我通常什么时候需要不同的端口进行客户端-服务器通信?(此问题适用于c#和通用套接字编程)。

我已经实现并一直在使用一个简单的c#客户机-服务器应用程序。基本上:
  • 服务器监听客户端
  • 已接受/已连接
  • 服务器生成客户端线程-
  • 服务器等待客户端对话
  • 客户端对话
  • 服务器响应
  • 客户端对话
  • 服务器响应等

如果客户端停止通信,那么服务器将永远阻塞在NetworkStream.Read()模式中,除非客户端断开连接。

我现在正在考虑双方保持安静的情况,直到任何一方发生一些事件,然后只有客户端或服务器发送数据。因此,两者都需要在NetworkStream中。以某种方式并发地读取模式,也可以同时发送给对方(如果事件同时发生在双方)。

在这种情况下,我们需要不同的端口吗?或者客户端和服务器都可以在NetworkStream中。BeginRead模式没有风险的问题与NetworkStream是在写和发送模式在同一时间?

谢谢。

何时为客户机-服务器应用程序使用不同的端口

问得好。我用这种架构写过不止一个应用程序。当您需要进行双向通信时,您需要在客户机和服务器之间建立两个连接(当然,在两个不同的端口中):

  1. 请求从客户端流向服务器的连接
  2. 请求从服务器流到客户端的连接

这样,双方都将有一个准备读取的NetworkStream。您还注意到两个流之间的独立程度,允许您对双向请求处理代码进行更多的控制。