多线程的socket错误
我的程序在一个dll中,如果不用多线程,socket正确,但是我希望socket的recv和send分别放在各自单独的线程中,程序无法接受发送数据.请问这是什么原因.
DWORD ClientSendThd(LPVOID lpParam)
{ SOCKET p_trsocket=(SOCKET)lpParam;
timeval timeout;
memset(&timeout,0,sizeof(timeout));
timeout.tv_sec=5;
ASSERT(p_trsocket/*->toClientSocket!*/=INVALID_SOCKET);
while (true)
{char vv[]="lwg";
int tt=send(p_trsocket/*->toClientSocket*/,vv,sizeof(vv),0);
if (tt==SOCKET_ERROR )
{
CString strerror;
strerror.Format("%i",WSAGetLastError());
printf(strerror);
}
return 1;
}
extern "C" __declspec(dllexport) BOOL InitSocket()
{
.....初始化m_socket.....
.....socket , bind ,listen.....略
u_long arg=0;
tcpclientsocket[nowtcpsocket]=new CTwiSocket();
SOCKET toClientSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
toClientSocket=accept(m_socket,
(sockaddr*)&addr,
&addrlen);
if (toClientSocket!=INVALID_SOCKET)
{
CreateThread( 0,0,
(LPTHREAD_START_ROUTINE)ClientSendThd,
(LPVOID)(toClientSocket),0,&dw2);
}
...................................