socket在windows下和linux下的区别

简介: 原文: socket在windows下和linux下的区别 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.
原文: socket在windows下和linux下的区别

1)头文件 
windows下winsock.h/winsock2.h 
linux下sys/socket.h    错误处理:errno.h 

2)初始化 
windows下需要用WSAStartup

WSADATA wsaData;

        err = WSAStartup(0x202,&wsaData); if ( err != 0 ) { return 0; } else if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ) //检测是否支持这个版本的socket { WSACleanup( ); return 0; }

对应的退出清理用WSACleanup( );
linux下不需要 

3)关闭socket 
windows下closesocket(...) 
linux下close(...) 

4)socket类型 
windows下SOCKET 
linux下int 

5)获取错误码 
windows下WSAGetLastError() 

linux下errno变量

extern int errno;
        int geterror(){return errno;}

6)设置非阻塞 
windows下ioctlsocket(server_socket,FIONBIO,&ul);     int ul = 1
linux下fcntl(server_socket,F_SETFL, O_NONBLOCK);    <fcntl.h> 


7)send函数最后一个参数 
windows下一般设置为0 
linux下必须是后几个参数用到的socket中,值最大的数(整型)加1 (另一种说法是设置为MSG_NOSIGNAL)


8)毫秒级时间获取 
windows下GetTickCount() 
linux下gettimeofday() 

 

9)编译连接

windows下ws2_32.lib
linux下

连接是使用参数:-lstdc
        运行时需要libstdc++.so.5,可在/usr/lib目录中创建一个链接。

 

10)Socket操作错误返回值

都为SOCKET_ERROR,他的值是-1

 

11)异常处理

windows下没有对send()的异常处理,最后一个参数无效,写0就可以了。

linux下

当连接断开,还发数据的时候,不仅send()的返回值会有反映,而且还会像系统发送一个异常消息,如果不作处理,系统会出BrokePipe,程序会退出。为此,send()函数的最后一个参数可以设置MSG_NOSIGNAL,禁止send()函数向系统发送异常消息。

 

12)WSA宏

 

windows下WSA相关的操作

linux下WSA相关的操作在Linux不必要,直接去掉即可

 


3、多线程 
多线程: (win)process.h --〉(linux)pthread.h 
_beginthread --> pthread_create 
_endthread --> pthread_exit

目录
相关文章
|
3天前
|
Rust Linux iOS开发
|
20天前
|
弹性计算 运维 安全
阿里云服务器Windows和Linux操作系统区别对比
阿里云服务器Windows和Linux操作系统区别对比,性能有差异吗?有,同配置下Linux性能要优于Windows,但这与阿里云无关,仅仅是linux和windows之间的区别。另外,阿里云提供的windows和linux操作系统均为正版授权,用户不需要额外支付许可费用,如何选择?看用户自己的应用程序情况。
|
17小时前
|
安全 Linux 网络安全
|
1天前
|
Oracle Ubuntu Unix
Unix与Linux区别
Unix: Unix是一个操作系统家族的名称,最早由贝尔实验室(Bell Labs)的肖像电机公司(AT&T)开发。最早的Unix版本是在1969年创建的。 Linux: Linux是由芬兰计算机科学家Linus Torvalds在1991年创建的。它是作为一个免费、开放源代码的Unix克隆而开始的。
11 1
|
5天前
|
安全 Linux 数据安全/隐私保护
Linux命令 su 和 sudo 的区别
【2月更文挑战第5天】
20 0
Linux命令 su 和 sudo 的区别
|
9天前
|
关系型数据库 MySQL Linux
MySQL 数据库安装详解(linux系统和windows系统)
MySQL 数据库是一种广泛使用的开源关系数据库管理系统。在 Linux 和 Windows 系统上安装 MySQL 数据库的步骤略有不同。
41 0
|
13天前
|
安全 关系型数据库 MySQL
百度搜索:蓝易云【Linux和windows区别】
总体而言,Linux和Windows在内核类型、开源性、用户界面、文件系统、应用软件、安全性、硬件支持和使用场景等方面存在一定的差异,用户可以根据自己的需求和喜好来选择适合的操作系统。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
18 2
|
15天前
|
弹性计算 Ubuntu Linux
2024年Windows/Linux搭建幻兽帕鲁主机教程(超详细图文)
幻兽帕鲁作为一款热门多人在线游戏,为了给玩家提供稳定、流畅的联机体验,阿里云提供了高效便捷的快速部署解决方案,本文将为大家介绍阿里云一键部署幻兽帕鲁联机服务器详细教程。
|
20天前
|
弹性计算 运维 安全
阿里云服务器linux和windows镜像有啥区别?
阿里云服务器linux和windows镜像有啥区别?阿里云服务器镜像Windows和Linux操作系统有什么区别?性能有差异吗?有,同配置下Linux性能要优于Windows,但这与阿里云无关,仅仅是linux和windows之间的区别。另外,阿里云提供的windows和linux操作系统均为正版授权,用户不需要额外支付许可费用,如何选择?看用户自己的应用程序情况
|
缓存 网络协议 应用服务中间件
Windows Socket 最大连接数(★firecat推荐★,附个人总结)
Windows Socket 最大连接数(★firecat推荐★,附个人总结)
1558 0

相关产品

  • 云迁移中心