我实现的功能时,当客户端连接到服务器,然后等待接收服务器发送的数据!使用线程接收,代码如下:
DWORD WINAPI AcceptData(LPVOID threadInfo)
{
myThreadArgument* AcceptDArgument = (myThreadArgument*)threadInfo;
mySemaphore* AcceptDcoutSemaphore = AcceptDArgument->getCoutSemaphore();
myTcpSocket* vmyClient = AcceptDArgument->getClientConnect();
int recvBytes=0;
string messageFromServer = "";
int nRet=-1;
HWND hWnd=acedGetAcadDwgView()->GetSafeHwnd();
WSAEVENT revent = ::WSACreateEvent();
while (nRet!=WAIT_OBJECT_0) {
nRet = vmyClient->judgeDataRead(revent); //程序运行到这里就死掉了!!
if (nRet==WAIT_OBJECT_0) {
recvBytes = vmyClient->recieveMessage(messageFromServer);//程序运行到这里就死掉了!! if (messageFromServer!="")
......}}
}
int myTcpSocket::judgeDataRead(WSAEVENT event)
{
::WSAEventSelect(socketId, event,FD_READ);
int nRet = ::WaitForSingleObject(event,2000);
return nRet;
}myTcpSocket:是我写的一个socket类
请问应该怎么改,才能运行啊?谢谢了!!!
DWORD WINAPI AcceptData(LPVOID threadInfo)
{
myThreadArgument* AcceptDArgument = (myThreadArgument*)threadInfo;
mySemaphore* AcceptDcoutSemaphore = AcceptDArgument->getCoutSemaphore();
myTcpSocket* vmyClient = AcceptDArgument->getClientConnect();
int recvBytes=0;
string messageFromServer = "";
int nRet=-1;
HWND hWnd=acedGetAcadDwgView()->GetSafeHwnd();
WSAEVENT revent = ::WSACreateEvent();
while (nRet!=WAIT_OBJECT_0) {
nRet = vmyClient->judgeDataRead(revent); //程序运行到这里就死掉了!!
if (nRet==WAIT_OBJECT_0) {
recvBytes = vmyClient->recieveMessage(messageFromServer);//程序运行到这里就死掉了!! if (messageFromServer!="")
......}}
}
int myTcpSocket::judgeDataRead(WSAEVENT event)
{
::WSAEventSelect(socketId, event,FD_READ);
int nRet = ::WaitForSingleObject(event,2000);
return nRet;
}myTcpSocket:是我写的一个socket类
请问应该怎么改,才能运行啊?谢谢了!!!
int myTcpSocket::judgeDataRead(WSAEVENT event)
{
::WSAEventSelect(socketId, event,FD_READ);
int nRet = ::WaitForSingleObject(event,2000);
return nRet;
}
那等待接收服务器发送的数据,使用线程接收,这个功能实现的简单代码应该怎么写?怎么判断服务器有数据发送到客户端??
没有见过,
顶,学习中............