Potrzebny jest wielowątkowy serwer gniazd.
Do tego potrzebny jest główny wątek, który otwiera gniazdo do nasłuchiwania (i czeka na przychodzące połączenia klienta). To musi przejść do jakiejś pętli.
Następnie, gdy klient się z nim łączy, funkcja accept()
odblokuje się i w tym momencie należy obsłużyć żądanie klienta, przekazując żądanie do wątku, który się nim zajmie.
Po stronie serwera nastąpi powrót do pętli i oczekiwanie na inne połączenie, podczas gdy poprzedni wątek wykonuje swoje zadanie.
Możesz utworzyć wątki według potrzeb lub użyć puli wątków, która może być bardziej wydajna (oszczędność na czas inicjowania nowych wątków).
Poszukaj więcej informacji pod numerem here. Wyszukaj gniazdo serwera wielowątkowego w Internecie, w szczególności bind()
, listen()
i accept()
od strony serwera.
Jeśli nie rozumiem programowania gniazd, sugeruję, aby nie używać zwykłych gniazd. Zamiast tego użyj struktury sieciowej. [ACE] (http://www.cs.wustl.edu/~schmidt/ACE-overview.html) lub [ZeroMQ] (http://www.zeromq.org/). Początkowo wygląda to na dobry pomysł, aby zrobić gniazda wanilii, ale z czasem robi się bałagan. – Vikas
Próbowałem odsłuchać port ponownie w innym wątku, ale nie zadziałało, mówi, że port jest w użyciu, więc zapytałem;) – Lefsler
Nie ma nic szczególnego, co musisz zrobić. Nadal słuchasz, więc nie próbuj ponownie słuchać. –