Datový typ soketů
V aplikacích Winsock není popisovač soketu popisovač souboru a musí být použit s funkcemi Winsock.
V systému UNIX je popisovač soketu reprezentován standardním popisovačem souboru. V důsledku toho může být popisovač soketu v systému UNIX předán do některé ze standardních vstupně-výstupních funkcí souboru (například čtení a zápis).
Kromě toho všechny popisovače v systému UNIX, včetně popisovačů soketů, jsou malá, nezáporná celá čísla a některé aplikace předpokládají, že to bude pravdivé.
Obslužné rutiny Windows Sockets nemají žádná omezení, kromě toho, že hodnota INVALID_SOCKET není platným soketem. Popisovače soketů můžou mít libovolnou hodnotu v rozsahu 0 až INVALID_SOCKET–1.
Vzhledem k tomu, že typ SOCKET je nepodepsaný, může kompilace existujícího zdrojového kódu například vést k upozornění kompilátoru na neshody datových typů se znaménkem nebo bez znaménka.
To například znamená, že kontrola chyb při soketu a přijmout návrat funkcí by nemělo být provedeno porovnáním návratové hodnoty s –1 nebo zobrazením, jestli je hodnota záporná (společný i právní přístup v systému UNIX). Místo toho by aplikace měla použít konstantu manifestu INVALID_SOCKET definovanou v souboru hlaviček Winsock2.h. Například:
Typický styl BSD UNIX
s = socket(...);
if (s == -1) /* or s < 0 */
{/*...*/}
Upřednostňovaný styl
s = socket(...);
if (s == INVALID_SOCKET)
{/*...*/}
Související témata