socket在linux和windows下的差异
来源:互联网 发布:雷锋的故事动画片知乎 编辑:程序博客网 时间:2024/05/21 21:19
linux和windows下的socket都源自伯克利套接字,所以其在整体上是大致相同的,只不过在一些细节上存在一定的区别。对于一些需要平台兼容的处理,能够了解这些差异是非常有必要的。
linux和windows中的socket的差异
包含的头文件不同
linux –> 头文件:sys/socket.h 错误处理:errno.h
windows –> winsock.h/winsock2.h, 错误信息一般是通过WSAGetLastError获取。初始化方式不同
linux –> linux下一切皆是文件,所以不需要特殊的初始化操作
windows –> windows下启动时需要用WSAStartup(),退出时需要WSACleanup( )socket关闭的方式不同
linux –> close(socketfd)
windows –> closesocket(socketfd)socket类型不同
linux –> int类型
windows –> SOCKET 类型获取错误码的方式不同
windows –> WSAGetLastError()
linux –> 错误信息保存在全局的errno变量extern int errno;
int geterror(){return errno;}设置阻塞模式的方式不同
windows: –> ioctlsocket(server_socket,FIONBIO,&ul); int ul = 1
linux –> fcntl(server_socket,F_SETFL, O_NONBLOCK);send函数最后一个参数
windows –> 一般设置为0
linux –> 必须是后几个参数用到的socket中,值最大的数(整型)加1(另一种说法是设置为MSG_NOSIGNAL)select函数的第一个参数
windows –>
int select(int nfds,fd_set* readfds,fd_set* writefds,fd_set* exceptfds,const struct timeval* timeout);
nfds在windows其实是没有意义的,主要是为了兼容其他版本
linux –>
int select(int maxfd,fd_set*readfds,fd_set* writefds,fd_set*exceptfds,const struct timeval*timeout);
maxfd,文件描述符的范围,比待检测的最大文件描述符大1毫秒级时间获取
windows –> GetTickCount()
linux –> gettimeofday()编译链接的不同
windows –> 需要链接ws2_32.lib
linux –> 连接是使用参数:-lstdc
运行时需要libstdc++.so.5,可在/usr/lib目录中创建一个链接。Socket操作错误返回值
windows –> SOCKET_ERROR ?
linux –> SOCKET_ERROR ?send异常处理
windows –> windows下没有对send()的异常处理,最后一个参数无效,写0就可以了。
linux –> 当连接断开,还发数据的时候,不仅send()的返回值会有反映,而且还会像系统发送一个异常消息,如果不作处理,系统会出BrokePipe,程序会退 出。为此,send()函数的最后一个参数可以设置MSG_NOSIGNAL,禁止send()函数向系统发送异常消息。
- socket在linux和windows下的差异
- socket在windows下和linux下的区别
- socket在windows下和linux下的区别
- socket在windows下和linux下的区别
- socket在windows下和linux下的区别
- socket在windows下和linux下的区别
- socket在windows下和linux下的区别
- socket在windows下和linux下的区别
- socket在windows下和linux下的区别
- Qt文件遍历在linux下和windows下的差异
- socket在windows和linux下的区别
- socket编程在windows和linux下的区别
- socket编程在windows和linux下的区别
- socket编程在windows和linux下的区别
- socket在windows和linux下的区别
- 【转】socket编程在windows和linux下的区别
- maven打包pom文件在windows和linux下的格式差异
- Socket Linux和Windows下的区别
- 6.11
- HDU 5410 CRB and His Birthday
- Retrofit请求数据 多线程下载 Ijkplayer视频播放
- 牛客网PAT题目1002——数字分类(Java)
- UVALive-7512-November 11th
- socket在linux和windows下的差异
- C#读取目录下的所有视频
- Java ArrayList的自定义排序
- where does ansroid.os.SystemProperties store its key/values?
- Centos7忘记密码重置root密码
- ASP.NET控件(gridview datalist等等 )后台绑定数据
- 【Scikit-Learn 中文文档】2 使用 scikit-learn 介绍机器学习 | ApacheCN
- angular js 综合 循环死数据 全选/反选 过滤 批量删除 提交数据(判断空值) 排序
- 添加任意学生的提交页面