【发布时间】:2018-05-21 11:12:27
【问题描述】:
我必须实现一个与服务器的客户端通信接口,这有点奇怪,我对如何开发它感到怀疑。
通信遵循以下规则:
- 仅通过 TCP 完成。
- 客户端向服务器发送一个标识自己的 XML。
- 如果服务器响应正常,客户端开始监听来自服务器的传入请求。
TcpClient 可以充当服务器吗? 实现这一点的最佳方法是什么?
提前致谢。
【问题讨论】:
-
当您说“如果服务器响应正常,则客户端开始侦听来自服务器的传入请求。”你的意思是服务器期望客户端打开一个它可以连接的端口,或者它发送请求到客户端发起的同一个连接?
-
@DaisyShipton 它通过客户端发起的同一连接发送请求。实际上,服务器充当代理。其他一些客户端向服务器发出请求,服务器重定向到我的客户端,我的客户端响应服务器,服务器向发出请求的客户端发送响应。
-
不要陷入 TCP 初学者的常见错误。 TCP 是双向的无穷无尽的字节流。它不执行 messages,因为您不会在一端得到 1-1 匹配的
Send/Write调用与调用Receive/Read在另一端。如果您想要 messages(或请求/响应,或任何您想调用它们的名称),则由 you 在无穷无尽的字节流上实现消息传递(或移至为您实现这些的更高级别的协议)
标签: c# tcpclient tcplistener