何时为客户机-服务器应用程序使用不同的端口
本文关键字:客户机 服务器 应用程序 何时 | 更新日期: 2023-09-27 18:03:33
我通常什么时候需要不同的端口进行客户端-服务器通信?(此问题适用于c#和通用套接字编程)。
我已经实现并一直在使用一个简单的c#客户机-服务器应用程序。基本上:- 服务器监听客户端
- 已接受/已连接
- 服务器生成客户端线程-
- 服务器等待客户端对话
- 客户端对话
- 服务器响应
- 客户端对话
- 服务器响应等
如果客户端停止通信,那么服务器将永远阻塞在NetworkStream.Read()
模式中,除非客户端断开连接。
我现在正在考虑双方保持安静的情况,直到任何一方发生一些事件,然后只有客户端或服务器发送数据。因此,两者都需要在NetworkStream中。以某种方式并发地读取模式,也可以同时发送给对方(如果事件同时发生在双方)。
在这种情况下,我们需要不同的端口吗?或者客户端和服务器都可以在NetworkStream中。BeginRead模式没有风险的问题与NetworkStream是在写和发送模式在同一时间?谢谢。
问得好。我用这种架构写过不止一个应用程序。当您需要进行双向通信时,您需要在客户机和服务器之间建立两个连接(当然,在两个不同的端口中):
- 请求从客户端流向服务器的连接
- 请求从服务器流到客户端的连接
这样,双方都将有一个准备读取的NetworkStream
。您还注意到两个流之间的独立程度,允许您对双向请求处理代码进行更多的控制。