Megosztás a következőn keresztül:


Szoftvercsatorna adattípusa

A Winsock-alkalmazásokban a szoftvercsatorna-leíró nem fájlleíró, és a Winsock függvényekkel együtt kell használni.

A UNIX-ban a szoftvercsatorna-leírót egy szabványos fájlleíró jelöli. Ennek eredményeképpen a UNIX szoftvercsatorna-leírója átadható bármely szabványos fájl I/O-függvényének (például olvasási és írási).

Ezenkívül a UNIX összes fogópontja, beleértve a szoftvercsatornák fogópontját is, kicsi, nem negatív egész szám, és egyes alkalmazások feltételezik, hogy ez igaz lesz.

A Windows-szoftvercsatorna-leírók nem rendelkeznek korlátozásokkal, kivéve, hogy a INVALID_SOCKET érték nem érvényes szoftvercsatorna. A szoftvercsatornák fogópontjai a 0 és INVALID_SOCKET–1 közötti tartományban bármilyen értéket tartalmazhatnak.

Mivel a SOCKET típusa nincs aláírva, a meglévő forráskód összeállítása például UNIX-környezetből fordítói figyelmeztetéseket eredményezhet az aláírt/aláíratlan adattípus eltéréseiről.

Ez azt jelenti például, hogy ha a szoftvercsatorna és fogadja el függvények visszatérését, nem szabad a visszatérési értéket a -1 értékkel összehasonlítani, vagy azt, hogy az érték negatív-e (a UNIX-ban gyakori és jogi megközelítések). Ehelyett az alkalmazásnak a Winsock2.h fejlécfájlban meghatározott jegyzékállandót INVALID_SOCKET kell használnia. Például:

Tipikus BSD UNIX-stílus

s = socket(...);
if (s == -1)    /* or s < 0 */
    {/*...*/}

Előnyben részesített stílus

s = socket(...);
if (s == INVALID_SOCKET)
    {/*...*/}

Porting Socket Applications to Winsock

Winsock Programozási szempontok