Sdílet prostřednictvím


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)
    {/*...*/}

portování aplikací soketů do rozhraní Winsock

důležité informace o programování rozhraní Winsock