Autor Wątek: Winsock - pobieranie ip z socketa.  (Przeczytany 1397 razy)

Offline Ufos

  • Użytkownik

# Luty 27, 2007, 22:55:44
klient = accept(serwer,(struct sockaddr *)&sin, &rozmiar);funkcja accept zwraca socket klienta ale mam pytanie jak majac socket klienta zdobyc jego ip? wiem ze ma to cos wspolnego ze struktura sin a dokladnie z jej elementem sin_addr (tyle udalo mi sie znalezc w google)
z gory dzieki za pomoc.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline SirMike

  • Użytkownik
    • SirMike's Techblog

# Luty 27, 2007, 23:08:25
To co siedzi w drugim parametrze to wlasnie struktura sockaddr_in - przy nawiazaniu polaczenia bedzie wypelniona.

struct sockaddr_in
{
   short int sin_family; // rodzina adresów
   unsigned short int sin_port; // numer portu
   struct in_addr sin_addr; // adres IP
   unsigned char sin_zero[8]; // dla zachowania rozmiaru struct sockaddr
};

struct in_addr {
   unsigned long s_addr; // to ma rozmiar 32 bitów, lub 4 bajtów, ktore zamienisz sobie na char poprzez funkcje inet_ntoa
};


Ogólnie polecam znakomity tutorial "Beej's Guide To Network Programming" - znajdziesz w google.