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)
{/*...*/}
Kapcsolódó témakörök