funkcje gniazd
TRANSCRIPT
Funkcje gniazd:
Specyfikacja funkcji socket()
Nazwa funkcji: socket()
Zwracana wartość: SOCKETJeżeli nie ma błędów, funkcja socket() zwraca referencje do nowego gniazda.W przeciwnym przypadku zwraca kod INVALID_SOCKET. Kod błędu można uzyskać przez wywołanie funkcji WSAGetLastError().
Argumenty: int af, int type, int protocol
af - [in] Typ adresu stosu (address family specification).type - [in] Typ adresu dla nowych gniazd (SOCK_STREAM, SOCK_DGRAM).protocol- [in] Numer protokołu użytego przez gniazdo. Wartość parametru: IPPROTO_IP,IPPROTO_TCP, 0.
Opis: Funkcja socket() tworzy gniazdo o określonym typie (specific service provider).Funkcja zadeklarowana w pliku winsock2.h, implementacja w pliku ws2_32.lib.
Specyfikacja funkcji recv()
Nazwa funkcji : recv()
Zwracana wartość: intJeśli nie ma błędów funkcja recv() zwraca liczbę odebranych bajtów. Jeśli połączenie zostałozamknięte (gracefully closed), zwracaną wartością jest zero. W pozostałych przypadkach zwracana jest wartość SOCKET_ERROR. Kod błędu można uzyskać wywołując funkcję WSAGetLastError().
Argumenty : SOCKET s, char* buf, int len, int flags
s - [in] Obiekt identyfikujący połączone gniazdo.buf - [out] Bufor na przychodzące dane.len - [in] Długość bufora (argumentu buf) w bajtach.flags - [in] Parametr określający typ wywołania funkcji.
Opis : Funkcja recv() odbiera dane z połączonego (connected) gniazda lub z gniazda połączonegofunkcją bind() (bound socket).
Specyfikacja funkcji send()
1
Nazwa funkcji : send()
Zwracana wartość: int
Argumenty : SOCKET s, const char* buf, int len, int flags
s [in] Obiekt identyfikujący połączone gniazdo.buf [in] Bufor zawierający dane do wysłania.len [in] Długość danych w buforze (liczona w bajtach).flags [in] Wskaźnik określający typ wywołania funkcji.
Flagi:MSG_DONTROUTE – Dane nie powinny być rutowane. WinSock service provider może ignorować tą flagę.MSG_OOB –Wysyła dane ‘Out-of-Band Data’ (gniazdo typu TCP, np. SOCK_STREAM).
Opis : Funkcja send() wysyła dane do połączonego gniazda.
Specyfikacja funkcji bind()
Nazwa funkcji : bind()
Zwracana wartość: intW przypadku błędu funkcja zwraca SOCKET_ERROR z kodem który można uzyskać wywołując metodę WSAGetLastError(), w przeciwnym przypadku zwaraca zero.
Argumenty : SOCKET s, const struct sockaddr* name, int namelen
s - [in] Obiekt identyfikujący niepołączone gniazdo (unbound socket).name - [in] Adres IP do przypisania do gniazda (brany ze struktury SOCKADDR).namelen - [in] Długość (w bajtach) wartości parametru name.
Opis : Funkcja kojarzy adres lokalny hosta z gniazdem.
Specyfikacja funkcji listen()
2
Nazwa funkcji : listen()
Zwracana wartość: intJeśli nie ma błędów funkcja listen() zwraca zero. W pozostałych przypadkach zwracana jest wartość SOCKET_ERROR. Kod błędu moŜna uzyskać wywołując funkcję WSAGetLastError().
Argumenty : SOCKET s, int backlog
s - [in] Obiekt identyfikujący połączone (bound), nierozłączone (unconnected) gniazdo.backlog - [in] Maksymalna długość kolejki czekających połączeń. Jeżeli wartość parametru jest ustawiona na SOMAXCONN, serwer ustawia wartość tego parametru na maksymalnym,ale ‘rozsądnym’ poziomie. Nie ma standardowej procedury określania wartości tego parametru.
Opis : Funkcja listen() ustawia gniazdo w stan nasłuchiwania.
Specyfikacja funkcji accept()
Nazwa funkcji : accept()
Zwracana wartość: SOCKETJeżeli nie ma błędu funkcja accept() zwraca typ SOCKET. Zwrócona wartość jest uchwytem do gniazda do którego jest tworzone połączenie.W pozostałych przypadkach jest zwracana wartości INVALID_SOCKET. Kod błędu można uzyskać wywołując funkcję WSAGetLastError().
Argumenty : SOCKET s, struct sockaddr* addr, int* addrlen
s - [in] Obiekt identyfikujący gniazdo, które przeszło w stan nasłuchiwania poprzez wywołanie funkcji listen().addr - [out] Parametr opcjonalny, wskaźnik do bufora, który przechowuje adres łączącego się hosta. Format parametru addr jest wyznaczany na podstawie wartości parametru sa_family ze struktury SOCKADDR.addrlen - [out] Opcjonalny wskaźnik do liczby zawierającej długość parametru addr.
Specyfikacja funkcji gethostbyname()
Nazwa funkcji : gethostbyname()
3
Zwracana wartość: struct hostent* FAR
Argumenty : const char* namename - [in] Wskaźnik do zakończonej zerem nazwy hosta (odbiorcy danych).
Opis : Funkcja gethostbyname() pobiera nazwę hosta z bazy hosta Zamiast gethostbyname() zalecane jest używanie funkcji getaddrinfo().
Specyfikacja funkcji connect()
Nazwa funkcji : connect()
Zwracana wartość: int
Argumenty : SOCKET s, const struct sockaddr* name, int namelens - [in] Obiekt identyfikujący niepołączone gniazdo.name - [in] Nazwa gniazda w strukturze SOCKADDR do którego powinno być zrealizowane połączenie.namelen - [in] Długość nazwy gniazda (liczona bajtach).
Opis : Funkcja buduje połączenie do określonego gniazda.
Specyfikacja funkcji closesocket()
Nazwa funkcji : closesocket()
Zwracana wartość: intArgumenty : SOCKET ss [in] Obiekt określający gniazdo do zamknięcia.
Opis : Funkcja closesocket() zamyka gniazdo.
4