Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En las aplicaciones winsock, un descriptor de socket no es un descriptor de archivo y debe usarse con las funciones winsock.
En UNIX, un descriptor de socket se representa mediante un descriptor de archivo estándar. Como resultado, se puede pasar un descriptor de socket en UNIX a cualquiera de las funciones de E/S de archivo estándar (lectura y escritura, por ejemplo).
Además, todos los identificadores de UNIX, incluidos los identificadores de socket, son enteros pequeños y no negativos, y algunas aplicaciones hacen suposiciones de que esto será cierto.
Los identificadores de Windows Socket no tienen restricciones, aparte de que el valor INVALID_SOCKET no es un socket válido. Los identificadores de socket pueden tomar cualquier valor del intervalo 0 a INVALID_SOCKET–1.
Dado que el SOCKET tipo no está firmado, la compilación del código fuente existente desde, por ejemplo, un entorno UNIX puede provocar advertencias del compilador sobre las coincidencias de tipos de datos firmados o sin firmar.
Esto significa, por ejemplo, que la comprobación de errores cuando el socket de y aceptar funciones de devolución no debe realizarse comparando el valor devuelto con –1 o viendo si el valor es negativo (enfoques comunes y legales en UNIX). En su lugar, una aplicación debe usar la constante de manifiesto INVALID_SOCKET tal como se define en el archivo de encabezado Winsock2.h. Por ejemplo:
Estilo TÍPICO de UNIX de BSD
s = socket(...);
if (s == -1) /* or s < 0 */
{/*...*/}
Estilo preferido
s = socket(...);
if (s == INVALID_SOCKET)
{/*...*/}
Temas relacionados