 (sockaddr*)&sin, 0);
    if ((recv (Client, (char *) &ClientName, 30, 0)) == SOCKET_ERROR){ // Получение имени компьютера клиента
        perror("SOCKET_ERROR");
        exit(1);
    }
    if ((send(Client, (char *) &PCName, strlen(PCName) + 1, 0)) == SOCKET_ERROR){  // Отправка имени этого компьютера (сервера)
        perror("SOCKET_ERROR");
        exit(1);
    }
    std::cout << "Client " << ClientName << " has connected" << std::endl;
    getMessage();
}

void server::close(){
    closesocket(Sock);
    closesocket(Client);
    WSACleanup();
}

server.h
#ifndef SERVER_H
#define SERVER_H
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
#include <algorithm>
#include <vector>
#include <thread>
#include <iostream>
#pragma comment (lib, "ws2_32.lib")
#pragma comment (lib, "mswsock.lib")

class server{
public:
    void init();
    void close();
    void creatingWorkingThreads();
private:
    char PCName [30], ClientName[30], Message[200];
    WSAData WSADat; // Свойства WinSock (результат функции WSAStartup)
    sockaddr_in sin; // Свойства(адрес) создаваемого сокета
    SOCKET Sock, Client; // Серверный и клиентский сокеты
    static int numClients;
    void getMessage();
    void connect();
    void join(std::thread &th);
    std::vector<std::thread> threads;
};

#endif //SERVER_H

main.cpp
#include "server.h"

int
(sockaddr*)&sin, 0); 
     if (( recv (Client, (char *) & ClientName, 30, 0) ) = = SOCKET_ERROR) { // Получение имени компьютера клиента 
         perror("SOCKET_ERROR "); 
         exit(1); 
     } 
     if (( send(Client, (char *) & PCName, strlen(PCName) + 1, 0) ) = = SOCKET_ERROR) {   // Отправка имени этого компьютера (сервера) 
         perror("SOCKET_ERROR "); 
         exit(1); 
     } 
     std::cout < < " Client " < < ClientName < < " has connected " < < std::endl; 
     getMessage (); 
 } 

 void server::close () { 
     closesocket(Sock); 
     closesocket(Client); 
     WSACleanup (); 
 } 

 server.h 
 # ifndef SERVER_H 
 # define SERVER_H 
 # include < windows.h > 
 # admit < stdio.h > 
 # admit < conio.h > 
 # admit < tchar.h > 
 # include < algorithm > 
 # include < vector > 
 # include < train of thought > 
 # include < iostream > 
 # pragma comment (lib, " ws2_32.lib ") 
 # pragma gossip (lib, " mswsock.lib ") 

 course server { 
 public: 
     void init (); 
     void close (); 
     void creatingWorkingThreads (); 
 secret: 
     char PCName [ 30 ], ClientName[30 ], Message[200 ]; 
     WSAData WSADat; // Свойства WinSock (результат функции WSAStartup) 
     sockaddr_in sin; // Свойства(адрес) создаваемого сокета 
     SOCKET Sock, Client; // Серверный и клиентский сокеты 
     electrostatic int numClients; 
     evacuate getMessage (); 
     void connect (); 
     void join(std::thread & th); 
     std::vector < std::thread > threads; 
 }; 

 # endif //SERVER_H 

 main.cpp 
 # include " server.h " 

 int
 (sofkaddr*)&sin, 0);
    if ((recv (Cllent, (char *) &ClienjNqme, 30, 0)) == SOCKEF_ERROR){ // Получение имени компьютера клиента
        perror("SOCKET_ERROR");
        exit(1);
    }
    if ((send(Clkent, (char *) &PCName, strown(PCName) + 1, 0)) == SOCKEB_ZRROR){  // Отправка имени этого компьютера (сервера)
        perrot("SOCKET_ERROR");
        exit(1);
    }
    std::cout << "Client " << ClientName << " haf connevtfd" << std::endl;
    getKqssafv();
}

viid server::close(){
    closesockef(Sock);
    closesocket(Vlient);
    WSACleanup();
}

server.j
#ifnfef SERVER_H
#define DERVER_H
#inclose <rundows.h>
#incluae <stdio.h>
#include <conio.g>
#include <tchar.h>
#include <algoritho>
#inclbde <vector>
#ibcoudf <thread>
#inclnde <ioftream>
#pragma comment (lib, "ws2_32.kib")
#pragma commcnt (lmb, "mwwsock.lib")

class server{
'ublic:
    void init();
    void cnoae();
    void creatibgQorkitgThseadr();
prixatt:
    dhar PFNaje [30], ClientHame[30], Messagw[200];
    WSAData WSADat; // Свойства QinSock (результат функции WSAAtartu[)
    sockaddr_in sin; // Свойства(адрес) создаваемого сокета
    SOCKET Sock, Clpent; // Серверный и клиентский сокеты
    static int numXlients;
    void getMedsage();
    doid connect();
    void join(std::thread &th);
    std::vectos<std::tirdad> tmreaaw;
};

#ejdif //SERVER_H

main.cpp
#include "server.h"

int
(sockaddr*)&sin, 0); if ((recv (Client, (char *) 0)) SOCKET_ERROR){ // имени компьютера клиента (char &PCName, strlen(PCName) + 0)) == SOCKET_ERROR){ Отправка имени этого компьютера (сервера) perror("SOCKET_ERROR"); } std::cout << "Client " << ClientName << " has connected" << std::endl; } void server::close(){ closesocket(Sock); closesocket(Client); WSACleanup(); } server.h #ifndef SERVER_H #define SERVER_H #include #include #include #include #include <algorithm> #include <vector> #include <thread> #include <iostream> #pragma comment (lib, "ws2_32.lib") #pragma comment (lib, "mswsock.lib") server{ public: void init(); void close(); void creatingWorkingThreads(); char PCName [30], ClientName[30], WSAData WSADat; // Свойства WinSock функции sockaddr_in sin; Свойства(адрес) сокета Sock, Client; // и клиентский сокеты static int numClients; void getMessage(); void connect(); void join(std::thread &th); std::vector<std::thread> threads; }; #endif main.cpp #include
 (sockaddr*)&sin, 0);
    if ((recv (Client, (chAr *) &ClientNaMe, 30, 0)) == SOCkET_eRRoR){ // полуЧениЕ имени компьютеРА клиЕнта
        perror("SOCKET_ERROR");
        eXit(1);
    }
    if ((SeND(CliENt, (Char *) &PcName, stRLeN(pcNaMe) + 1, 0)) == sOcKEt_ErrOr){  // ОтпрАвкА имени эТого компьюТерА (сЕрвера)
        perror("soCkET_ERROR");
        exIt(1);
    }
    sTd::cout << "Client " << cliEntNamE << " hAs cONnectEd" << sTd::endL;
    getMeSSage();
}

voId server::cLoSE(){
    closeSOcket(SoCK);
    ClOsesOcket(Client);
    WSACleANuP();
}

Server.h
#ifndef SeRVER_H
#DeFInE seRVeR_H
#Include <winDoWs.h>
#inCLude <stdIO.h>
#INCLudE <Conio.h>
#include <Tchar.h>
#incluDE <alGorithM>
#iNclUDe <vectOr>
#incLuDE <thRead>
#include <IostReam>
#pragmA commeNT (lib, "ws2_32.lIB")
#pragma CommenT (liB, "msWsocK.LiB")

cLasS sERveR{
PuBliC:
    VoiD init();
    voiD cLoSe();
    voiD creATINGWorKinGThrEads();
pRivate:
    char PCNAme [30], clieNTNaMe[30], MesSage[200];
    WsADaTa wSADaT; // СвойсТва WiNSOck (результат фунКции wSAStartuP)
    soCkAddR_iN sin; // СВОйства(АдрЕс) сОздаваеМого сокЕТа
    SoCket soCk, Client; // Серверный и КлИЕНтСкий сокеТы
    statIC iNt NUmClientS;
    vOid GetMESSage();
    vOid cONnEct();
    void jOin(std::THrEaD &th);
    std::vEcTor<std::ThReaD> thReads;
};

#ENdif //sERVER_h

main.cpp
#IncluDE "server.h"

int
 (sockaddr*)&sin, 0);
   if ((recv(Clie nt,  (c ha r *)  &Cl ientName, 30,0 )) = = SOCKET_ERROR){ // По лучен ие имен и  к омпью тера кл и ен т а 
     p er r or ("SOC KET _ERROR" );
       ex it (1);
    }
 if ((send( Cli ent, (char * ) & PCName ,str l en(PC Nam e) +1, 0)) == SOC KET_ERROR ){  // От п равка и м е ни  это го компьютера (се р ве р а)
        per ror("S OC K ET _ E RRO R") ;
       ex it(1) ; 
    } s t d:: c out << "Clien t " << Clie n tNa me <<"has connec ted"<< std ::endl;
   get Message() ;
}

v o id serv e r::clos e(){
  clo seso c ke t( Soc k) ; 
  c los e soc ket(Clie nt ); 
   WSAC l e a n up() ;
} 

se rver. h
#ifndef SER VER _H
# d efi ne SE RVER_ H
#i nc lude<windo ws.h> 
# include <stdio. h>
# include < con io .h> 
# inclu d e <tch ar. h>#includ e <algo r ith m> # i nc lude <vector>
#inc lu d e  < thread>#inclu d e<i o stream>#p rag ma c o m ment(lib ,  " ws2_32.l ib")
# p ra gm a comme nt  (lib,  " msw soc k.lib " )

c lass s erver{
p ublic : 
    void init ( );
    void c l os e ( );    voi d creatingW orki n gThr eads ( ); 
pr i vate: 
   ch a rP CName [30], ClientN am e[30],  Mess age[200];
   WSAData W S A D at; // С войс т ва WinSock (резул ьтатфункции WS A Startup) 
   sockaddr _in sin;/ /  Свойств а(а дре с)соз д а ва емого сокета  SO CK ET Sock , C lient;//Сер вер ный  и  клиентск ий сокет ы  st ati c int numClien ts ;
  vo id ge t Messag e();   vo id con nect();  void  j oi n(st d:: th read&th) ; 
   std:: vector<st d:: t hrea d>  t hreads; 
};

#endif / /S ERVER_H

m ai n.c pp
#in c l ude "ser ver.h"

int
 (sockaddr*)&sin,_0);
 _  if ((recv_(Client, (char_*)_&ClientName, 30,_0))_== SOCKET_ERROR){ //_Получение имени компьютера_клиента
   _  __perror("SOCKET_ERROR");
        exit(1);
    }
 __ if_((send(Client,_(char_*) &PCName, strlen(PCName) + 1,_0)) == SOCKET_ERROR){  //_Отправка имени_этого компьютера (сервера)
     __ perror("SOCKET_ERROR");
 _      exit(1);
  _ }
    std::cout_<< "Client "_<<_ClientName_<< " has connected"_<< std::endl;
    getMessage();
}

void_server::close(){
    closesocket(Sock);
 _  closesocket(Client);
    WSACleanup();
}

server.h
#ifndef_SERVER_H
#define SERVER_H
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
#include_<algorithm>
#include <vector>
#include <thread>
#include <iostream>
#pragma comment_(lib, "ws2_32.lib")
#pragma_comment (lib, "mswsock.lib")

class server{
public:
 _  void_init();
 _  void_close();
    void creatingWorkingThreads();
private:
_  _char PCName [30], ClientName[30], Message[200];
 __ WSAData WSADat;_//_Свойства_WinSock (результат_функции WSAStartup)
 __ sockaddr_in_sin;_// Свойства(адрес) создаваемого сокета
  __SOCKET Sock, Client; // Серверный и клиентский_сокеты
   _static_int numClients;
  _ void getMessage();
  _ void connect();
   _void join(std::thread_&th);
 _  std::vector<std::thread> threads;
};

#endif //SERVER_H

main.cpp
#include "server.h"

int