ok, i am developing a TCP/IP Client-Server application. Im currently working on transferring multiple files simultaneously from Server to Client.
Here is the code that receives data
Code://Global variable struct SepComm { char UnmanagedData[8192]; int TotalSize; int Sock; void* param; };the problem is (if you haven't noticed it already) that before the thread (SeparateCommands) is completed , a new data is arrived and it changes the SepComm variables and crashes the function.Code:case FD_READ: { int SizeOfData = 0; int SockNO=0; for(SockNO=0;SockNO<=TotalConn;SockNO++) { if (pMsg->wParam == sTemp[SockNO]) break; } ZeroMemory(SepCommParam.UnmanagedData,sizeof(SepCommParam.UnmanagedData)); SizeOfData=recv(sTemp[SockNO],(char*)SepCommParam.UnmanagedData,sizeof(SepCommParam.UnmanagedData)/sizeof(SepCommParam.UnmanagedData[0]),0); if(SizeOfData == -1) goto Close_Sock; if(SizeOfData != -1) if(SizeOfData != 0) { SepCommParam.TotalSize = SizeOfData; SepCommParam.Sock = SockNO; SepCommParam.param = this; DWORD threadID; HANDLE hThread = CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)SeparateCommands, &SepCommParam, 0, &threadID); } } break;
whats is the best what to prevent or fix this issue?
thanks




Reply With Quote