c++控制台程序线程问题

[复制链接]
查看11 | 回复4 | 2013-10-10 14:58:59 | 显示全部楼层 |阅读模式
设计问题 (1)tcp是基于连接的、双向的,你一个tcp连接对应两个线程,一个收、一个发,很少有这么设计的(虽然逻辑上是可以的);一般一个线程处理一个连接,同时做收发处理(2)你的代码不全,我没太看明白;但一般服务器主线程循环调用accept,接收新的连接请求(并生成新的socket),然后把这个socket传递给新线程处理。代码问题(1)你的ClientThreadSend和ClientThreadAccept创建完,后面就直接CloseHandle;很可能线程还没有执行就被CloseHandle掉了;如果你的线程只处理简单事情、没有无限循环,那么就不需要主线程CloseHandle,让线程自己执行完退出就可以了。...
回复

使用道具 举报

千问 | 2013-10-10 14:58:59 | 显示全部楼层
第一个线程应该是ClientThreadSend吧,先起的ClientThreadSend,然后是ClientThreadAccept输出也应该是这个顺序。...
回复

使用道具 举报

千问 | 2013-10-10 14:58:59 | 显示全部楼层
Ret=recv(ClientSocket,RecvBuffer,MAX_PATH,0);//阻塞函数 if (0==Ret||SOCKET_ERROR==Ret){
cout<<"客服端退出"<<endl;break;}你这个是判断远端客户端是否关闭连接了吧?如果远端没关闭那就会一直阻塞啊。...
回复

使用道具 举报

千问 | 2013-10-10 14:58:59 | 显示全部楼层
你把主进程代码发一下,是不是创建线程那里没写对...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行