Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <winsock2.h>
  3. #include <windows.h>
  4. #undef UNICODE
  5. #define TAILLE 128
  6.  
  7. using namespace std;
  8.  
  9. DWORD WINAPI receive_commandes(LPVOID lpParam)
  10. {
  11. cout << "Thread created " << endl;
  12. SOCKET current_client = reinterpret_cast<SOCKET>(lpParam);
  13. char buffer[TAILLE] = {0};
  14. char sendData[TAILLE] = {0};
  15. int recus, emis;
  16.  
  17. while(true)
  18. {
  19. recus = recv(current_client, buffer, sizeof (buffer),0);
  20. Sleep(10);
  21. if(recus==0)
  22. {
  23. MessageBoxA(nullptr, "error", "error", MB_OK);
  24. memset(buffer,0,sizeof (buffer));
  25. memset(sendData,0,sizeof (sendData));
  26. closesocket(current_client);
  27. ExitThread(0);
  28. }
  29. else if (recus==2 && buffer[0]=='\r' && buffer[1]=='\n')
  30. {
  31. cout << "\n...\n";
  32. memset(buffer,0,sizeof (buffer));
  33. memset(sendData,0,sizeof (sendData));
  34. }
  35. else
  36. {
  37. if(strstr(buffer,"Hello"))
  38. {
  39. cout << "\nReceived 'Hello' commande \n";
  40. strcpy(sendData, "Hello, salutations du serveur... LOL\r\n");
  41. Sleep(10);
  42. emis = send(current_client, sendData, sizeof (sendData),0);
  43. memset(buffer,0,sizeof (buffer));
  44. memset(sendData,0,sizeof(sendData));
  45. }
  46. else if (strstr(buffer,"Bye"))
  47. {
  48. cout << "\nReceveid 'bye' commande \r\n";
  49. strcpy(sendData,"...ciao !!! \n");
  50. Sleep(10);
  51. emis = send(current_client, sendData, sizeof (sendData),0);
  52. memset(buffer,0,sizeof (buffer));
  53. memset(sendData,0,sizeof(sendData));
  54. closesocket(current_client);
  55. ExitThread(0);
  56. }
  57. else
  58. {
  59. strcpy(sendData,"Commande invalide \r\n");
  60. Sleep(10);
  61. emis = send(current_client, sendData, sizeof (sendData),0);
  62. memset(buffer,0,sizeof (buffer));
  63. memset(sendData,0,sizeof(sendData));
  64. }
  65. }
  66. }
  67. }
  68.  
  69. int main()
  70. {
  71. cout << "Demarrage du serveur multi client TCP" << endl;
  72.  
  73. SOCKET sock;
  74. DWORD thread;
  75. WSADATA wsaData;
  76. sockaddr_in server;
  77.  
  78. int ret = WSAStartup(0x202,&wsaData);
  79. if(ret != 0)
  80. return 0;
  81.  
  82. server.sin_family = AF_INET;
  83. server.sin_addr.s_addr = INADDR_ANY;
  84. server.sin_port = htons(12345);
  85.  
  86. sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  87. if(sock == INVALID_SOCKET)
  88. return 0;
  89.  
  90. if(bind(sock,(reinterpret_cast<sockaddr*>(&server)),sizeof(server)) != 0)
  91. return 0;
  92.  
  93. if(listen(sock,5) != 0)
  94. return 0;
  95.  
  96. SOCKET client;
  97. sockaddr_in from;
  98.  
  99. int fromlen = sizeof(from);
  100.  
  101. while(true)
  102. {
  103. client = accept(sock,(sockaddr*)&from,&fromlen);
  104. cout << "Nouveau client conencter";
  105. CreateThread(nullptr,0,(LPTHREAD_START_ROUTINE)receive_commandes,(LPVOID)client,0,&thread);
  106. }
  107.  
  108. shutdown(sock,1);
  109. return 0;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement