WinSock, określanie o którym połączeniu mówi komunikat.

0

Witajcie.
Pracuję nad programem wykorzystującym WinSock (wymogi..). W delphi piszę klienta który jednocześnie łączyć się będzie z wieloma serwerami. Połączenia mają być asynchroniczne (brak aktywnego czekania). Wykorzystuję więc ten tutek: http://www.unit1.pl/334,txt
oraz to co napisane jest tu: Komunikaty
Problem mam taki:
Gdy dostaję komunikat FD_Connect, skąd mam wiedzieć o które gniazdo chodzi? Tzn próbuję otworzyć kilka połączeń, zaczynają mi przychodzić komunikaty, że połączenia się udały, jak mam rozpoznać, które połączenie zostało uaktywnione?

Proszę o pomoc.
Pozdrawiam

0

Chyba w wParam komunikatu jest.

0

A mógłbym jeszcze prosić o wyjaśnienie który komunikat pojawia się w którym momencie? Chodzi mi o komunikaty FD_CONNECT i FD_ACCEPT.
Załóżmy, że mam funkcję connect. Który komunikat dostanę jeśli uda się nawiązać połączenie? Który komunikat dostanę jeśli nie uda się?
Czy jest komunikat informujący o zerwaniu połączenia?
I dlaczego na starcie programu dostaję komunikaty FD_CONNECT oraz FD_READ mimo, że jeszcze nie rozpoczęła się obsługa połączeń?

Pozdrawiam

0

Nie wiem dokładnie bo dawno nie programowałem "gołych" socketów ale chyba zdarzenie FD_ACCEPT dostaje serwer gdyby będzie połączenie przychodzące do zaakceptowania (serwer wtedy wywołuje funkcję accept), FD_CONNECT po wywołaniu connect a czy się powiodło to pobierasz WSAGETSELECTERROR z lParam jak wszystko ok zwraca 0 (tak jak WSAGETSELECTEVENT w celu sprawdzenia jakie zdarzenie wystąpiło). A czemu dostajesz od razu na starcie programu te zdarzenia to nie mam pojęcia chyba coś namieszałeś :/

0

@Pacyna: skoro masz napisać to w czystym WinAPI, a Twój klient lub/i serwer ma być zrobiony z użyciem WinSock, a działać ma w oparciu o protokół TCP, to polecił bym Tobie wspomóc się tym modułem: http://piechnat.pl/article/simpletcp.html - są też na tej stronie przytoczone krótkie przykłady klienta TCP (HTTP) oraz serwera TCP.

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