Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W aplikacjach Winsock deskryptor gniazda nie jest deskryptorem plików i musi być używany z funkcjami Winsock.
W systemie UNIX deskryptor gniazd jest reprezentowany przez standardowy deskryptor plików. W związku z tym deskryptor gniazd w systemie UNIX może zostać przekazany do dowolnej standardowej funkcji we/wy pliku (na przykład odczytu i zapisu).
Ponadto wszystkie dojścia w systemie UNIX, w tym uchwyty gniazd, są małe, nieujemne liczby całkowite, a niektóre aplikacje zakładają, że będzie to prawdziwe.
Dojścia windows Sockets nie mają żadnych ograniczeń, poza tym, że wartość INVALID_SOCKET nie jest prawidłowym gniazdem. Uchwyty gniazd mogą przyjmować dowolną wartość z zakresu od 0 do INVALID_SOCKET–1.
Ponieważ typ socket jest niepodpisany, kompilowanie istniejącego kodu źródłowego z, na przykład środowisko SYSTEMU UNIX może prowadzić do ostrzeżeń kompilatora o niezgodności typów danych podpisanych/niepodpisanych.
Oznacza to na przykład, że sprawdzanie błędów, gdy gniazdo i akceptują zwracanie funkcji, nie powinno być wykonywane przez porównanie wartości zwracanej z –1 lub sprawdzenie, czy wartość jest ujemna (zarówno typowe, jak i prawne podejścia w systemie UNIX). Zamiast tego aplikacja powinna używać stałej manifestu INVALID_SOCKET zgodnie z definicją w pliku nagłówka Winsock2.h. Na przykład:
Typowy styl BSD UNIX
s = socket(...);
if (s == -1) /* or s < 0 */
{/*...*/}
Preferowany styl
s = socket(...);
if (s == INVALID_SOCKET)
{/*...*/}
Tematy pokrewne