首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何知道监听的有新的连接下来

2013-02-02 
怎么知道监听的有新的连接上来?UpdateData(TRUE)SOCKET serversocksocket(AF_INET,SOCK_STREAM,0)struc

怎么知道监听的有新的连接上来?

UpdateData(TRUE);
SOCKET serversock=socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_port=4040;
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
if(bind(serversock,(sockaddr*)&addr,sizeof(addr))!=0)
{
MessageBox("绑定失败");
return ;
}
if(listen(serversock,10)!=0)
{
MessageBox("监听失败");
return ;
}
while (1){
SOCKET RecvSock;
int len=sizeof(addr);
RecvSock=accept(serversock,(sockaddr*)&addr,&len);
char buff[128]={0};
recv(RecvSock,buff,sizeof(buff),0);
m_strEdit.Format("客户端发来消息:%s",buff);
UpdateData(FALSE);
send(RecvSock,"我是服务器",10,0);
closesocket(RecvSock);
}
closesocket(serversock);


我怎样知道监听的有新的连接上来,然后多线程处理上来的连接?
[解决办法]
一个线程不断去accept,有连接则新开一个recv处理线程。
[解决办法]
accept之后启动新的线程去处理吧。

或者用select检测。

热点排行