socket listen后的accept问题
我自己定义了一个socket类
其中有两个成员函数:
BOOL CServer::Listen()
{
if(listen(st,5)!=0)
return FALSE;
return TRUE;
}
在调用Listen()后开一个线程调用下面的成员函数:
void CServer::Run()
{
SOCKET cst;
sockaddr_in saddr;
int lensaddr=sizeof(saddr);
char buffer[LENBUF];
cst=accept(this->st,(sockaddr*)&saddr,&lensaddr);
switch(atoi(buffer))
{
case CT_EXIT: //receives exit message;
SocketLst* lst=lst->getfirst();
while(lst!=0)
{
if(lst->getsocket()==cst)
{
lst->del();
return;
}
lst=lst->getnext();
}
break;
}
for(SocketLst* slst=slst->getfirst();slst!=0;slst=slst->getnext())
{
if(cst==slst->getsocket() || saddr.sin_addr.S_un.S_addr==slst->getsaddr().sin_addr.S_un.S_addr)
{
for(SocketLst* mlst=mlst->getfirst();mlst!=0;mlst=mlst->getnext())
{
send(mlst->getsocket(),buffer,LENBUF,0);
}
return;
}
}
static SocketLst newlst(cst,saddr);
for(SocketLst* lst=lst->getfirst();lst!=0;lst=lst->getnext())
{
send(lst->getsocket(),buffer,LENBUF,0);
}
}
运行很流畅,but it doesn't work!
怎么解决阿?