Witam,
jest to mój pierwszy post na tym forum. Dodam iż jestem początkujący więc proszę o wyrozumiałość jeśli piszę jakieś głupoty.
Sprawa wygląda tak:
Thread1 uruchamia nasłuch na porcie 27015
Thread2 uruchamia nasłuch na porcie 27016
Thread3 sprawdza w pętli czy 1 i 2 działają, jeżeli nie (nie działa nasłuch oraz nie ma aktualnie podłączonego użytkownika) podnosi dany wątek
Wygląda to następująco
- Gdy uruchomię program-serwer z nasłuchem na tylko jednym porcie, po rozłączeniu klienta wszystko się podnosi i wznawiany jest nasłuch.
- Gdy jednak 2 porty nasłuchują, podłączy i rozłączy się klient na jednym porcie, próba wznowienia nasłuchu zwraca na bindzie błąd 10048 address already in use
- podczas gdy 2) zwraca non stop 10048, łączy się klient na drugim nasłuchującym porcie, po czym rozłącza i wtedy Thread3 bez problemu podnosi obydwa wątki
W obydwu przypadkach, rozłączenie klienta wywołuje te same polecenia czyli CloseSocket, WSACleanup i _endthread.
W task managerze widać iż wątki są zamykane i otwierane na nowo.
Nie wiem dokładnie jak działa WSACleanup (The WSACleanup function terminates use of the Winsock 2 DLL (Ws2_32.dll) w momencie, gdy go wywołuję przy jednoczesnym nasłuchiwaniu na drugim porcie. Czy wówczas nie czyści on wszystkiego co pozostało po pierwszym wątku?
Z góry dziękuję za pomoc.
Michał