18,356
社区成员
发帖
与我相关
我的任务
分享
fd_set fdRead;
fd_set fdSocket;
FD_ZERO(&fdSocket);
// FD_SET(socket, &fdSocket);
FD_SET(datasocket, &fdSocket);
timeval timeout;
timeout.tv_sec = RESPONSETIME;//RESPONSETIME = 2
while (true)
{
fdRead = fdSocket;
int nRet = ::select(0, &fdRead, NULL, NULL, &timeout);
if(nRet >0)
{
for(int i = 0; i<(int)fdSocket.fd_count; i++)
{
if (FD_ISSET(datasocket, &fdRead))
{
if (fdSocket.fd_array[i] == datasocket)
{
::recvfrom(datasocket, CommandData, sizeof(CommandData), 0, (sockaddr *)&RecvAddr, &n);
do
{
memset(recvimagedata, 0, RECVBUFFER);
recvlen = ::recvfrom(datasocket, recvimagedata, RECVBUFFER, 0, (sockaddr *)&RecvAddr, &n);
if(recvlen >8)
memcpy_s(psave, imagebuffersize, (recvimagedata + 8), recvlen - 8);
imagebuffersize -= recvlen;
psave += recvlen;
} while (imagebuffersize > 0);
::recvfrom(datasocket, CommandData, sizeof(CommandData), 0, (sockaddr *)&RecvAddr, &n);
}
}
}
}
}
int size = 1024*256;
setsockopt(m_ServerSock,SOL_SOCKET,SO_RCVBUF,(const char*)&size,sizeof(int));
setsockopt(m_ServerSock,SOL_SOCKET,SO_SNDBUF,(const char*)&size,sizeof(int));