Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In Winsock-Anwendungen ist ein Socketdeskriptor kein Dateideskriptor und muss mit den Winsock-Funktionen verwendet werden.
In UNIX wird ein Socketdeskriptor durch einen Standarddateideskriptor dargestellt. Daher kann ein Socketdeskriptor auf UNIX an eine der Standarddatei-E/A-Funktionen übergeben werden (z. B. Lese- und Schreibzugriff).
Darüber hinaus sind alle Handles in UNIX, einschließlich Sockethandles, kleine, nicht negative ganze Zahlen, und einige Anwendungen machen annahmen, dass dies zutrifft.
Windows Sockets-Handles haben keine Einschränkungen, außer dass der Wert INVALID_SOCKET kein gültiger Socket ist. Socketziehpunkte können einen beliebigen Wert im Bereich 0 bis INVALID_SOCKET-1 annehmen.
Da der SOCKET- Typs nicht signiert ist, kann das Kompilieren vorhandener Quellcode aus einer UNIX-Umgebung beispielsweise zu Compilerwarnungen über signierte/nicht signierte Datentypen führen.
Dies bedeutet z. B., dass die Überprüfung auf Fehler beim Socket und akzeptieren, Funktionen zurückgegeben werden, nicht durch Vergleichen des Rückgabewerts mit -1 oder prüfen, ob der Wert negativ ist (sowohl allgemeine als auch rechtliche Ansätze in UNIX). Stattdessen sollte eine Anwendung die Manifestkonstante INVALID_SOCKET wie in der Winsock2.h Headerdatei definiert verwenden. Zum Beispiel:
Typischer BSD UNIX-Stil
s = socket(...);
if (s == -1) /* or s < 0 */
{/*...*/}
Bevorzugte Formatvorlage
s = socket(...);
if (s == INVALID_SOCKET)
{/*...*/}
Verwandte Themen