如何在双向套接字连接上序列化telnet,如通信?

Grz*_*icz 0 c++ sockets vb6 multithreading telnet

我在同一台机器上运行的VB和VC++程序之间实现了TCP/IP通信.在VC++方面,我产生了一个侦听连接的线程.在VB方面,我使用Winsock API连接到C++服务器.一切似乎都运行良好,特别是当我手动调试并逐步完成通信时.协议是基于文本的,命令在'\n'上终止,可能有也可能没有答案.

这就是问题所在.我正在尝试实现发送到服务器的命令,这需要一些处理,服务器将它们发送回客户端.在简单的条件下,这可以正常工作,但在重负载或不同的机器配置下,有时通信会中断.

客户端可能正在发送命令,但服务器可能正在发送先前命令的答案.在VB客户端以某种方式获得(而不是它得到"EIVED"一个"接收数据"说,)它打破了国家机器,我已经实现跟踪连接一个支离破碎的答案.

所以,是的,客户端和服务器正在同时谈话,这是一个问题.如何序列化或排队此通信?我知道这类似于以太网上的网络数据包冲突问题.

Ric*_*ton 5

而不是数据包冲突,我的猜测是你读取的内容比你预期的更多.可能是你最后一次从套接字读取的东西是这样的

OTHER STUFF\nDATA REC
Run Code Online (Sandbox Code Playgroud)

在下一次阅读中你得到"EIVED"?