我正在做一個項目,需要我接收來自多個發件人的消息。我的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