socketpairsocket编程为什么要选择AF_INET?
socketpair 时间:2021-07-16 阅读:(
)
windows下有socketpair吗
1.头文件 windows下winsock.h或winsock2.h /in.h(大部分都在这儿),unistd.h(close函数在这儿),sys/socket.h(在in.h里已经包含了,可以省了) 2.初始化 windows下需要用WSAStartup启动Ws2_32.lib,并且要用#ment(lib,"Ws2_32")来告知编译器链接该lib. linux下不需要 3.关闭socket windows下closesocket() linux下close() 4.类型 windows下SOCKET linux下int(我喜欢用long,这样保证是4byte,因为-1我总喜欢写成0xFFFF) 5.获取错误码 windows下getlasterror()/WSAGetLastError() linux下,未能成功执行的socket操作会返回-1; 如果包含了errno.h,就会设置errno变量 6.设置非阻塞 windows下ioctlsocket() linux下tl(),需要头文件tl.h 7.send函数最后一个参数 windows下一般设置为0 linux下最好设置为MSG_NOSIGNAL,如果不设置,在发送出错后有可能会导致程序退出 8.毫秒级时间获取 windows下GetTickCount() linux下gettimeofday() 9.多线程 windows下包含process.h,使用_beginthread和_endthread linux下包含pthread.h,使用pthread_create和pthread_exit 10.用IP定义一个地址(sockaddr_in的结构的区别) windows下addr_var.sin_addr.S_un.S_addr linux下addr_var.sin_addr.s_addr 而且Winsock里最后那个32bit的S_addr也有几个以联合(Union)的形式与它共享内存空间的成员变量(便于以其他方式赋值),而Linux的Socket没有这个联合,就是一个32bit的s_addr.遇到那种得到了是4个char的IP的形式(比如127一个,0一个,0一个和1一个共四个char),WinSock可以直接用4个S_b来赋值到S_addr里,而在Linux下,可以用边向左移位(一下8bit,共四下)边相加的方法赋值. 11.异常处理 linux下当连接断开,还发数据的时候,不仅send()的返回值会有反映,而且还会像系统发送一个异常消息,如果不作处理,系统会出BrokePipe,程序会退出.为此,send()函数的最后一个参数可以设MSG_NOSIGNAL,禁止send()函数向系统发送异常消息.SOCKET类型和CSOCKET有什么区别?
CSocket是MFC对socket的封装,而且设置了消息模式,但是因此不会出现阻塞,效率会比较高。
你只能在MFC程序中应用而且不能在线程中对其操作,不然肯定会出现这样那样的错误。
这主要和它保存消息接收窗口的句柄有关系。
socket 是比较低层的,你可以设置其通信模式,相对比较灵活。
可以自己控制。
当然也也可以把它设置成和 CSocket形式,全看你怎么选择。
socket编程为什么要选择AF_INET?
选择 AF_INET 的目的就是使用 IPv4 进行通信。
因为 IPv4 使用 32 位地址,相比 IPv6 的 128 位来说,计算更快,便于用于局域网通信。
而且 AF_INET 相比 AF_UNIX 更具通用性,因为 Windows 上有 AF_INET 而没有 AF_UNIX。
注:AF_INET(又称 PF_INET)是 IPv4 网络协议的套接字类型,AF_INET6 则是 IPv6 的;而 AF_UNIX 则是 Unix 系统本地通信。
扩展资料:
AF_INET和PF_INET的区别
1、AF 表示ADDRESS FAMILY 地址族?
2、PF 表示PROTOCL FAMILY 协议族
3、Winsock2.h中
#define AF_INET 0
#define PF_INET AF_INET
所以在windows中AF_INET与PF_INET完全一样
4、而在Unix/Linux系统中,在不同的版本中这两者有微小差别,对于BSD,是AF,对于POSIX是PF
在函数socketpair与socket的domain参数中有:AF_UNIX,AF_LOCAL,AF_INET,PF_UNIX,PF_LOCAL,PF_INET.
这几个参数有:AF_UNIX=AF_LOCAL, PF_UNIX=PF_LOCAL, AF_LOCAL=PF_LOCAL, AF_INET=PF_INET.?
对于socketpair与socket的domain参数,使用PF_LOCAL系列,而在初始化套接口地址结构时,则使用AF_LOCAL.
例如: z = socket(PF_LOCAL, SOCK_STREAM, 0); ? ? adr_unix.sin_family = AF_LOCAL;
提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...
sharktech怎么样?sharktech (鲨鱼机房)是一家成立于 2003 年的知名美国老牌主机商,又称鲨鱼机房或者SK 机房,一直主打高防系列产品,提供独立服务器租用业务和 VPS 主机,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹,所有产品均提供 DDoS 防护。不知道大家是否注意到sharktech的所有服务器的带宽价格全部跳楼跳水,降幅简直不忍直视了,还没有见过这么便宜的独立服...
sparkedhost怎么样?sparkedhost主机。Sparkedhost于2017年7月注册在美国康涅狄格州,2018年收购了ClynexHost,2019年8月从Taltum Solutions SL收购了The Beast Hosting,同年10月从Reilly Bauer收购了OptNode Hosting。sparkedhost当前的业务主要为:为游戏“我的世界”提供服务器、虚拟...
socketpair为你推荐
stackoverflowerrorjava.lang.StackOverflowError 是什么意思图片地址怎么获得图片地址settimerMFC 中,全局SetTimer函数怎么用?oracle索引如何在ORACLE数据库的字段上建立索引rownumbersql server 2005中row_number怎么用数秦科技安徽数智通科技有限公司怎么样?spawning急救!编好C++程序后(确认无误),再编译时总出现error spawning 是什么意思?是不是系统出了问题imqq官网如何伸请QQ?layoutsubviews如何修改TableViewCell中的ImageView的Frame和大小新手怎么制作表格怎么样在电脑上制作表格初学者
华众虚拟主机管理系统 哈尔滨服务器租用 windows虚机 域名抢注工具 域名商 国外私服 老左博客 云全民 柚子舍官网 域名和空间 美国免费空间 网通服务器托管 江苏双线服务器 服务器维护 贵阳电信测速 华为k3 114dns 后门 重庆服务器 广东服务器托管 更多