MCPcopy Create free account
hub / github.com/SOUI2/soui / AcceptThread

Method AcceptThread

demo/httpsvr/GenericServer.cpp:250–403  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

248
249
250UINT __stdcall CGenericServer::AcceptThread(LPVOID pParam)
251{
252 CGenericServer *pGenericServer = (CGenericServer*)pParam;
253 SOCKET s; // Main Listen Socket
254 WORD wVersionRequested;
255 WSADATA wsaData;
256 sockaddr_in saLocal;
257 WSAEVENT Handles[2];
258 WSANETWORKEVENTS NetworkEvents;
259 sockaddr ClientAddr;
260 INT addrlen = sizeof(ClientAddr);
261 sockaddr_in sain;
262 char cAddr[50];
263 int result;
264
265 saLocal.sin_family = AF_INET;
266 saLocal.sin_port = htons(pGenericServer->ServerPort);
267 saLocal.sin_addr.s_addr = INADDR_ANY;
268
269 wVersionRequested = MAKEWORD(2, 2);
270
271 result = WSAStartup(wVersionRequested, &wsaData);
272 if(result != 0)
273 {
274 pGenericServer->LogMessage(LOGFILENAME, _T("WSAStartup(...) failure"), _T("AcceptThread"), result);
275 return THREADEXIT_SUCCESS;
276 }
277
278 if( LOBYTE(wsaData.wVersion) != 2 ||
279 HIBYTE(wsaData.wVersion) != 2)
280 {
281 pGenericServer->LogMessage(LOGFILENAME, _T("Requested Socket version not exist"), _T("AcceptThread"));
282 pGenericServer->CleanupThread(NULL, NULL, NULL);
283 return THREADEXIT_SUCCESS;
284 }
285
286 s = WSASocket(AF_INET, SOCK_STREAM, 0, (LPWSAPROTOCOL_INFO)NULL, 0, WSA_FLAG_OVERLAPPED);
287 if(s == INVALID_SOCKET)
288 {
289 pGenericServer->LogMessage(LOGFILENAME, _T("WSASocket(...) failure"), _T("AcceptThread"), WSAGetLastError());
290 pGenericServer->CleanupThread(NULL, NULL, NULL);
291 return THREADEXIT_SUCCESS;
292 }
293
294 //
295 // B I N D
296 //
297 result = ::bind(s, (struct sockaddr *)&saLocal, sizeof(saLocal));
298 if(result == SOCKET_ERROR)
299 {
300 pGenericServer->LogMessage(LOGFILENAME, _T("bind(...) failure"), _T("AcceptThread"), WSAGetLastError());
301 pGenericServer->CleanupThread(NULL, NULL, s);
302 return THREADEXIT_SUCCESS;
303 }
304
305 //
306 // L I S T E N
307 //

Callers

nothing calls this directly

Calls 4

GetLastErrorFunction · 0.85
LogMessageMethod · 0.80
CleanupThreadMethod · 0.80
AddClientMethod · 0.80

Tested by

no test coverage detected