sever_thread.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include <stdio.h>
  2. #include <Winsock2.h>
  3. #include <process.h>
  4. #pragma comment (lib, "Ws2_32.lib")
  5. unsigned int __stdcall listeningThread(void *param)
  6. {
  7. SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);
  8. SOCKADDR_IN addrSrv;
  9. addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
  10. addrSrv.sin_family = AF_INET;
  11. addrSrv.sin_port = htons((int)param);
  12. int ret = bind(sockSrv, (SOCKADDR*) &addrSrv, sizeof(SOCKADDR));
  13. ret = listen(sockSrv, 5);
  14. SOCKADDR_IN addrClient;
  15. int len = sizeof(SOCKADDR);
  16. while (1)
  17. {
  18. SOCKET sockConn = accept(sockSrv, (SOCKADDR*) &addrClient, &len);
  19. char sendBuf [] = "Hello World !";
  20. send(sockConn, sendBuf, strlen(sendBuf) + 1, 0);
  21. char recvBuf[50];
  22. recv(sockConn, recvBuf, 50, 0);
  23. printf("%s\n", recvBuf);
  24. closesocket(sockConn);
  25. }
  26. return 0;
  27. }
  28. void main()
  29. {
  30. WORD wVersionRequested;
  31. WSADATA wsaData;
  32. int err;
  33. wVersionRequested = MAKEWORD(2, 2);
  34. err = WSAStartup(wVersionRequested, &wsaData);
  35. if (err != 0) {
  36. return;
  37. }
  38. _beginthreadex(NULL, 0, listeningThread, (void *) 8120, 0, NULL);
  39. _beginthreadex(NULL, 0, listeningThread, (void *) 8121, 0, NULL);
  40. Sleep(INFINITE);
  41. }