Windows和Linux下的网络编程方法有哪些异同? 相同之处:
Linux和Windows都支持多种网络协议,比如TCP/IP、NetBIOS和IPX。都支持多种类型的网络适配器。都具备通过网络共享资源的能力,比如共享文件和打印。都可以提供网络服务能力,比如 DHCP 和 DNS。 不同之处:
1、头文件: #include
2、socket初始化与关闭:Windows需要 WSAStartup(),closesocket(...)函数Linux不需要初始化,结束socket用close(...) 3、类型声明: SOCKET int
在Windows里将SOCKET宏定义成unsigned int 4、错误返回码:
windows下getlasterror()/WSAGetLastError()/SOCKET_ERROR linux下errno变量 SOCKET_ERROR=-1
5、设置非阻塞:
ioctlsocket(server_socket,FIONBIO,&ul);
ioctlsocket在Linux中没有定义,用fcntl替代即可,但要包含fcntl.h头文件。 #include
fcntl(server_socket,F_SETFL, O_NONBLOCK); 6、send函数最后一个参数: windows下一般设置为0
linux下最好设置为MSG_NOSIGNAL,禁止send()函数向系统发送异常消息。如果不设置,
在发送出错后有可能会导致程序退出。