Witam! Mam pewien serwer TCP napisany w c++, który może połączyć sie tylko z jednym klientem naraz. Chcę zrobić, by kilka klientów naraz mogło się z nim połączyć, a nie wiem jak (jestem początkującym).
Oto kod serwera:
#include <cstdlib>
#include <iostream>
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <commctrl.h>
using namespace std;
WSADATA wsda;
char szRepMessage[80];
int iMessageLen;
int ret;
char szInBuffer[128];
int iBufferLen;
int iPort, iAddrLen;
SOCKET sListen, sClient;
SOCKADDR_IN addr,remote_addr;
int main(int argc, char *argv[]) {
WSAStartup(MAKEWORD(2,2), &wsda);
iPort = 2732;
// stworzenie gniazda TCP
sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
// sprawdzenie bledu
if (sListen == SOCKET_ERROR)
{
cout << "nie mozna utworzyc gniazda." << endl;
}
// laczenie gniazda z adresem/portem
addr.sin_family = AF_INET;
addr.sin_port = htons(iPort);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
ret = bind(sListen, (struct sockaddr *) &addr, sizeof(addr));
// sprawdzenie bledu
if (ret == SOCKET_ERROR) {
cout << "nie mozna powiazac gniazda." << endl;
}else{
cout << "gniazdo TCP zaladowane." << endl;
}
ret = listen(sListen, 10);
if (ret == SOCKET_ERROR){
cout << "nie mozna nasluchiwac" << endl;
} else {
cout << "ok!" << endl;
}
iAddrLen = sizeof(remote_addr);
sClient = accept(sListen, (struct sockaddr *) &remote_addr, &iAddrLen);
if (sClient == SOCKET_ERROR) {
cout << "ktos nie moze sie polaczyc." << endl;
}else{
cout << "ktos polaczyl sie z serwerem."<< endl;
}
return EXIT_SUCCESS;
}
Z góry dzięki za pomoc.