Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuál es la diferencia entre la programación de sockets en Windows y Linux?

¿Cuál es la diferencia entre la programación de sockets en Windows y Linux?

1. Archivo de encabezado

winsock.h o winsock2.h en Windows

netinet/in.h en Linux (la mayoría de ellos están aquí), unistd. .h (la función de cierre está aquí), sys/socket.h (ya incluido en in.h, puede omitirlo)

2 Inicialización

WSAStartup es necesario en Windows. Inicie Ws2_32.lib y use #pragma comment(lib, "Ws2_32") para indicarle al compilador que vincule la biblioteca.

No es necesario en Linux

3. Cierre el socket

closesocket(...) en Windows

close(.. en Linux) .)

4. Escriba

SOCKET en Windows

int en Linux

5.

Getlasterror()/WSAGetLastError() en Windows

En Linux, las operaciones de socket fallidas devolverán -1; si se incluye errno.h, se establecerá la variable errno

6. Configure ioctlsocket() sin bloqueo en Windows

fcntl() en Linux, se requiere el archivo de encabezado fcntl.h

7. último de los parámetros de la función de envío

Generalmente está configurado en 0 en Windows

Es mejor configurarlo en MSG_NOSIGNAL en Linux. Si no está configurado, el programa puede cerrarse después de un. error de envío

8. Obtener el tiempo en milisegundos

GetTickCount() en Windows

gettimeofday() en Linux