我正在做一个项目,需要我接收来自多个发件人的消息。我的recv服务器正在使用一个线程来连续使用UDP协议下的数据recv
。我在头文件中有一个名为struct BufferData
的结构来组织从客户端接收到的缓冲区。这是我struct
的样子:线程和结构体通信
struct BufferData
{
char Buffer1[BYTES];
char Buffer2[BYTES];
char Buffer3[BYTES];
char MixedBuffer1[BYTES];
char MixedBuffer2[BYTES];
char MixedBuffer3[BYTES];
};
这里是在.cpp文件我的recv线程功能。
hThread = (HANDLE)_beginthreadex(NULL, 0, &CUdpSocket::ServerRecvThread, pRecvData, 0, &threadID); // Thread caller
unsigned __stdcall CUdpSocket::ServerRecvThread(void *threadArg)
{
//-----------------------------------------------
// Initialize Winsock
//-----------------------------------------------
// Create a receiver socket to receive datagrams
//-----------------------------------------------
// Bind the socket to any address and the specified port.
//-----------------------------------------------
// Call the recvfrom function to receive datagrams
// on the bound socket.
start:
recvfrom(RecvSocket, RecvBuf, BufLen, 0, (SOCKADDR *)&SenderAddr, &SenderAddrSize);
goto start;
//-----------------------------------------------
// Close the socket when finished receiving datagrams
//-----------------------------------------------
// Clean up and exit.
return 0;
}
不过,我不知道豪包含在RecvBuf价值传递到我的BufferData结构,因为这是一个线程,我不能用直接的方式。请帮忙。
谢谢。
谢谢!这真的帮助我。 – 2011-03-20 06:57:55
+1不使用goto – 2011-03-20 13:41:36