socket在windows下和linux下的区别

转载 2011年01月15日 23:36:00

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

socket编程在windows和linux下的区别

如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境。   下面大概分...
  • jeakon
  • jeakon
  • 2013年06月23日 11:13
  • 2834

【转】socket编程在windows和linux下的区别

原文地址: http://www.cnblogs.com/dyllove98/p/3151162.html 如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Win...

Windows下与Linux下编写socket程序的区别

Windows下与Linux下编写socket程序的区别 原文地址:http://hi.baidu.com/wyh20100301/item/ec5d1f31c0e650fb2784f4fc ...

Windows下与Linux下编写socket程序的区别

【【Windows】】 【Windows: 头文件的区别】 #includewinsock.h> #includewinsock2.h> 【Windows: 初始化的区别】 ...

socket编程在windows和linux下的区别

如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境。 下面大概分几个...

C语言实现windows和linux下socket通信

client on windows and server on linux

Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码

主要难点在于设置recv()与send()的超时时间,具体要注意的事项,请看代码注释部分,下面是代码: #include #include #include #include #in...

Socket程序从Windows移植到Linux下的一些注意事项

转载标明出处:http://www.linuxidc.com/Linux/2008-10/16410.htm

Socket程序从windows移植到linux下需要注意的

关于这个话题网上流传的是一个相同的版本,就是那个第一项是头文件的区别,但后面列出的头文件只有#include没有(估计是原版的在不断转载的过程中有人不小心忘了把尖括号转义,让浏览器当html标记解析没...

windows与Linux下socket的不同

socket相关程序从Windows移植到Linux下需要注意的: 1)头文件 Windows下winsock.h/winsock2.h Linux下sys/socket.h 错误处理:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:socket在windows下和linux下的区别
举报原因:
原因补充:

(最多只允许输入30个字)