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

时间:2011-07-25 18:15:52

标签: c# client port networkstream

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

我已经实现并使用了一个简单的C#客户端 - 服务器应用程序。基本上:

  • 服务器侦听客户端
  • on accepted / connected
  • server spawn client thread -
  • 服务器等待客户端通话
  • 客户谈话
  • 服务器响应
  • 客户谈话
  • 服务器响应等

如果客户端停止通话,那么服务器将永久地在NetworkStream.Read()模式下阻塞该生成的线程,除非客户端断开连接。

我现在正在考虑双方保持安静的情况,直到某一事件发生在任何一方,然后客户端或服务器才会发送数据。因此,两者都需要以某种方式同时在NetworkStream.Read模式下同时发送给对方(如果事件同时发生在两端)。

在这种情况下我们是否需要不同的端口,或者客户端和服务器都可以处于NetworkStream.BeginRead模式,而不会出现同时出现写入和发送模式的NetworkStream问题的风险?

感谢。

1 个答案:

答案 0 :(得分:1)

很好的问题。我已经用该架构编写了多个应用程序。当您需要进行双向通信时,您需要在客户端和服务器之间建立两个连接(当然,在两个不同的端口中):

  1. 请求从客户端流向服务器的连接
  2. 请求从服务器流向客户端的连接
  3. 这样,双方都准备好了NetworkStream。并且您注意到两个流之间的独立性级别,允许您更好地控制双向请求处理代码。