Serwer dla wielu klientów

Odpowiedz Nowy wątek
shock8876
2010-02-17 12:45
shock8876
0

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.

Pozostało 580 znaków

2010-02-17 20:31

Rejestracja: 12 lat temu

Ostatnio: 2 lata temu

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0