在线程中使用SOCKET编程为什么收不到信息?
您好:
我使用SOCKET编程,用recv函数接受字符串,因为不知道何时数据到达缓冲区,所以我另外使用一个线程,在那边不停地接受,如果数据到,则显示。函数如下:
UINT getmsg(LPVOID mss)
{
ms * msss =(ms *)mss;
static SOCKADDR clientaddr;
static int sizeclient = sizeof(clientaddr);
static SOCKET clientSock ;
static bool accepted = false;
char buf[13];
while (1)
{
if (!accepted){
clientSock = accept(msss->servSock,(SOCKADDR *)&clientaddr, &sizeclient);
if (clientSock == INVALID_SOCKET) break;
accepted = true;
}
else{
if ((recv(clientSock, buf, sizeof(buf), 0))>0 )
msss->plist->AddString(buf);
}
}
return 0;
}
不知道怎么搞得,上面的代码放在线程中没有收到任何数据,但是放在主程序中就能收到数据,为什么呢?
还有,如果我定义缓冲区为13,发送13各字符,怎么接受到的13字符后面总有乱码(定义几个字符都一样)?
参数结构stru.plist = &(this->m_list);
stru.servSock = servSock;
有什么方法能够通知应用程序,数据到达了呢,以及连续接收数据?