admin管理员组文章数量:1794759
Windows Socket和Linux Socket编程的区别
来源:Windows Socket和Linux Socket编程的区别
SOCKET在原理上应该是一样的,只是不同系统的运行机置有些不同。
Socket 编程 windows到Linux代码移植遇到的问题
1、一些常用函数的移植 www.vckbase/document/viewdoc/?id=1586
2、网络
socket相关程序从windows移植到linux下需要注意的
1)头文件windows下winsock.h/winsock2.h
linux下sys/socket.h
错误处理:errno.h
其他常用函数的头文件可到命令行下用man指令查询。
2)初始化
windows下需要用WSAStartup
linux下不需要(很方便),直接可以使用
3)关闭socket
windows下closesocket(...)
linux下close(...)
4)类型
windows下SOCKET
在linux下为int类型
5)绑定地址的结构体
名称相同,都是struct sockaddr、struct sockaddr_in,这两者通常转换使用;
在Windows下面名称都是大写,而在Linux下为小写
常用:
Linux下:
sockaddr_in destAddr;
destAdd.sin_family=AF_INET;
destAddr.sin_port=htons(2030);
destAddr.sin_addr.s_addr=inet_addr("192.168.1.1");
Windows下:
SOCKADDR_IN destAddr;
destAddr.sin_addr.S_un.S_addr=inet_addr("192.168.1.1");
但结构体中成员的名称不同
Windows中结构体成员
struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; struct sockaddr { u_short sa_family; char sa_data[14]; }; struct in_addr { union { struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { u_short s_w1,s_w2; } S_un_w; u_long S_addr; } S_un; };下面的一些宏可以使windows下的程序移植到linux下(通过类型的重新定义,使代码具有linux和windows下的移植性)
[cpp] view plain copywindows下为了与伯克利套接字匹配,第一个参数是无所谓,一般可设为0;
int maxfdp是一个整数值,是指集合中所有文件描述符的范围,即所有文件描述符的最大值加1,不能错!
3、多线程 多线程: (win)process.h --〉(linux)pthread.h _beginthread --> pthread_create _endthread --> pthread_exit
版权声明:本文标题:Windows Socket和Linux Socket编程的区别 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686873671a113273.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论