我正在尝试编写一个 C# 服务器/客户端,它将同时通过 TCP 相互发送字节数组。我正在努力思考如何实现这一目标。我见过的所有示例都等待消息,然后发送响应。我需要同时进行沟通。
我是否需要为服务器和客户端上的传入和传出创建 2 个单独的 TCP 套接字连接?我可以通过 1 个连接以“全双工”方式同时传递数据吗?任何帮助表示赞赏。
我建议您查看异步套接字。原因是,它们在接收或发送数据时不会阻塞线程。
Socket.BeginReceive(buffer, offset, size, endReceiveMethod);
当收到字节时将调用 endreceive 方法。 (在另一个线程上)
发送时也是如此。
Socket.BeginSend(buffer, offset, size, endSendMethod);
我记得早期我担心在同一个线程上读取和写入,创建具有读取超时等的困难结构,并且每个客户端都有自己的线程。
异步套接字不需要这样做。它不为每个客户端使用单个线程。它使用 I/O 完成端口http://msdn.microsoft.com/en-us/library/windows/desktop/aa365198(v=vs.85).aspx而不是阻塞线程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)