读书人

socketcc 遇到有关问题求高手解答

发布时间: 2013-08-01 15:23:18 作者: rapoo

socketcc 遇到问题求高手解答
具体情况是这样的:
我创建了一个 TCPClientSocke 的实例链接到服务器,这一步没有问题,服务器还打印出相关的log 了。
然后,我启动了一个线程用该实例的 recvData 方法做消息接收。
主线程里面,在启动上述线程之后我写了一个死循环,在这个循环里面用了如下的逻辑:
每当控制台收到用户键入的字符串,就将字符串通过前述 TCPClientSocket 的实例的 sendData 方法发送出去。
就在这里出现了问题,经过不断的排查,基本断定就试 TCPClientSocket 捣的鬼。
初步结论:子线程里面的 recvData 方法竟然将主线程都给阻塞住了。
依据:只要将主线程里面的 sendData 方法注释掉,主线程执行其他的代码一点儿问题都没有。
另外问一下,bsd socket 用 tcp 做通讯,丢包、粘包、多包的情况出现多么?
卡了昨天一晚上,求高手解答,提前拜谢!
[解决办法]
TCP 是全双工的哦, 按理不会出现 recv 把 send 阻塞住.
TCP 既然是基于流的协议, 它保证了接受数据是可靠正确的, 重复的包会过滤掉, 丢掉的包会自动重传, 完全可以放心.
[解决办法]
觉得你设计的流程有点问题

读书人网 >C++

热点推荐