listening_thread.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include "winsock2.h"
  4. #include "classdef.h"
  5. #include "constdef.h"
  6. #include <process.h>
  7. #pragma comment (lib, "Ws2_32.lib")
  8. DWORD WINAPI clientThread(LPVOID lparam);
  9. unsigned int __stdcall listeningThread(void *param)
  10. {
  11. SOCKET local_socket, client_socket;
  12. sockaddr_in service, client_sock_addr;
  13. PARA* clientInfo;
  14. local_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  15. if(local_socket == INVALID_SOCKET)
  16. {
  17. //printf("socket failed\n");
  18. exit(0);
  19. }
  20. service.sin_family = AF_INET;
  21. service.sin_addr.S_un.S_addr = INADDR_ANY;
  22. service.sin_port = htons(int(param));
  23. if(bind(local_socket, (sockaddr*)&service, sizeof(sockaddr)) == SOCKET_ERROR)
  24. {
  25. //printf("bind failed\n");
  26. exit(0);
  27. }
  28. if(listen(local_socket, BACKLOG) == SOCKET_ERROR)
  29. {
  30. //printf("listen failed\n");
  31. exit(0);
  32. }
  33. //printf("****************************Web server start up!****************************\n\n");
  34. while(1)
  35. {
  36. int sockaddrLength = sizeof(sockaddr);
  37. client_socket = accept(local_socket, (sockaddr*)&client_sock_addr, &sockaddrLength);
  38. if(client_socket == INVALID_SOCKET)
  39. {
  40. //printf("accept failed\n");
  41. continue;
  42. }
  43. clientInfo = new PARA;
  44. clientInfo->s = client_socket;
  45. memcpy((void*)&(clientInfo->addr), &client_sock_addr, sizeof(client_sock_addr));
  46. //clientInfo.addr=clientSockaddr;
  47. clientThread((LPVOID)clientInfo);
  48. //DWORD lpThreadId;
  49. //HANDLE hThread;
  50. //hThread = CreateThread(NULL, 0, clientThread, (LPVOID)clientInfo, 0, &lpThreadId);
  51. //if(hThread != NULL)
  52. //{
  53. // //printf("------------------Start one connect!------------------\n");
  54. //}
  55. //else
  56. //{
  57. // //printf("------------------One client connection failed!\n------------------");
  58. //}
  59. }
  60. //closesocket(local_socket);
  61. //WSACleanup();
  62. }
  63. //void main()
  64. //{
  65. // WORD wVersionRequested;
  66. // WSADATA wsaData;
  67. // int err;
  68. // wVersionRequested = MAKEWORD(2, 2);
  69. // err = WSAStartup(wVersionRequested, &wsaData);
  70. // if (err != 0) {
  71. // return;
  72. // }
  73. //
  74. // _beginthreadex(NULL, 0, listeningThread, (void *) 8120, 0, NULL);
  75. // _beginthreadex(NULL, 0, listeningThread, (void *) 8121, 0, NULL);
  76. // Sleep(INFINITE);
  77. //}