Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <winsock2.h>
- #include <windows.h>
- #undef UNICODE
- #define TAILLE 128
- using namespace std;
- DWORD WINAPI receive_commandes(LPVOID lpParam)
- {
- cout << "Thread created " << endl;
- SOCKET current_client = reinterpret_cast<SOCKET>(lpParam);
- char buffer[TAILLE] = {0};
- char sendData[TAILLE] = {0};
- int recus, emis;
- while(true)
- {
- recus = recv(current_client, buffer, sizeof (buffer),0);
- Sleep(10);
- if(recus==0)
- {
- MessageBoxA(nullptr, "error", "error", MB_OK);
- memset(buffer,0,sizeof (buffer));
- memset(sendData,0,sizeof (sendData));
- closesocket(current_client);
- ExitThread(0);
- }
- else if (recus==2 && buffer[0]=='\r' && buffer[1]=='\n')
- {
- cout << "\n...\n";
- memset(buffer,0,sizeof (buffer));
- memset(sendData,0,sizeof (sendData));
- }
- else
- {
- if(strstr(buffer,"Hello"))
- {
- cout << "\nReceived 'Hello' commande \n";
- strcpy(sendData, "Hello, salutations du serveur... LOL\r\n");
- Sleep(10);
- emis = send(current_client, sendData, sizeof (sendData),0);
- memset(buffer,0,sizeof (buffer));
- memset(sendData,0,sizeof(sendData));
- }
- else if (strstr(buffer,"Bye"))
- {
- cout << "\nReceveid 'bye' commande \r\n";
- strcpy(sendData,"...ciao !!! \n");
- Sleep(10);
- emis = send(current_client, sendData, sizeof (sendData),0);
- memset(buffer,0,sizeof (buffer));
- memset(sendData,0,sizeof(sendData));
- closesocket(current_client);
- ExitThread(0);
- }
- else
- {
- strcpy(sendData,"Commande invalide \r\n");
- Sleep(10);
- emis = send(current_client, sendData, sizeof (sendData),0);
- memset(buffer,0,sizeof (buffer));
- memset(sendData,0,sizeof(sendData));
- }
- }
- }
- }
- int main()
- {
- cout << "Demarrage du serveur multi client TCP" << endl;
- SOCKET sock;
- DWORD thread;
- WSADATA wsaData;
- sockaddr_in server;
- int ret = WSAStartup(0x202,&wsaData);
- if(ret != 0)
- return 0;
- server.sin_family = AF_INET;
- server.sin_addr.s_addr = INADDR_ANY;
- server.sin_port = htons(12345);
- sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
- if(sock == INVALID_SOCKET)
- return 0;
- if(bind(sock,(reinterpret_cast<sockaddr*>(&server)),sizeof(server)) != 0)
- return 0;
- if(listen(sock,5) != 0)
- return 0;
- SOCKET client;
- sockaddr_in from;
- int fromlen = sizeof(from);
- while(true)
- {
- client = accept(sock,(sockaddr*)&from,&fromlen);
- cout << "Nouveau client conencter";
- CreateThread(nullptr,0,(LPTHREAD_START_ROUTINE)receive_commandes,(LPVOID)client,0,&thread);
- }
- shutdown(sock,1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement