标题:关于SDK写Socket客户端服务器的一些问题 求教!!!
只看楼主
lsd98
Rank: 2
等 级:论坛游民
帖 子:51
专家分:26
注 册:2010-3-30
结帖率:76.92%
已结贴  问题点数:20 回复次数:4 
关于SDK写Socket客户端服务器的一些问题 求教!!!
socket写服务器端 当监听到有客户端连接 就分出一个子线程 并产生一个套接字用于与该客户端的通讯,在这个线程里面是一个无限循环来接收客户端的消息的,但是当客户端关闭时,服务端的这个子线程就会陷入死循环,CPU占用达到100%,该如何解决这个问题呢??
还有一个问题就是  服务端建立一个 serversock用于监听  当客户请求连接时产生一个clientsock用于通讯,并将clientsock传入子线程,然后serversock继续监听  !!
当我执行closesocket(serversock)和closesocket(clientsock),WSAClean()时, 就会占用CPU资源
搜索更多相关主题的帖子: SDK Socket 服务器 客户端 
2010-05-04 20:28
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
得分:4 
做服务器程序可不是想象中的这么简单, 服务器架构都可以开一门学科了.

你应该使用一个临界区和几个状态变量, 在线程循环里不停判断

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2010-05-04 21:24
lsd98
Rank: 2
等 级:论坛游民
帖 子:51
专家分:26
注 册:2010-3-30
得分:0 
我做了一个全局变量判断了  但是还是不行,这个服务器不好做我知道,我只是做一个很简单的多线程问题 就是做不好
我把我的代码给你看一下发短消息给你
是什么原因造成的占用CPU很高
高手指点一下 不胜感激!!
2010-05-05 13:42
mlforever
Rank: 1
等 级:新手上路
帖 子:11
专家分:5
注 册:2008-8-28
得分:4 
程序代码:
while(1)
{
    read();
    //处理
}
估计你子线程是这样处理的吧
那应该是 客户端退出后 read函数 就会出错返回
然后就会一直循环
2010-05-05 17:13
kingsroot
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:284
专家分:1159
注 册:2010-3-28
得分:4 
把线程设置为阻塞的,如果客户端没有输入,则挂起,可以设置一个时钟,如果超过时间后,服务器端向客户端发送一个命令,如果接收到客户段关闭,则自己也关闭
我是在linux下,不太清楚windows下面如何实现,我想原理应该差不多吧~~~~
2010-05-06 19:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-305381-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.305250 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved