河北建设集团有限公司 信息化网站,如何建设自己网站,好用的种子搜索引擎,dede网站备份网络属性
1 对于套接字而言#xff0c;在不同的层中#xff0c;可以设置不同的属性#xff0c;如端口号快速重用、超时时间、设置广播、加入多播组等等
2 关于网络属性#xff0c;有两个函数#xff0c;分别是 setsockopt、getsockopt #include sys/types.h…网络属性
1 对于套接字而言在不同的层中可以设置不同的属性如端口号快速重用、超时时间、设置广播、加入多播组等等
2 关于网络属性有两个函数分别是 setsockopt、getsockopt #include sys/types.h /* See NOTES */ #include sys/socket.h int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); 功能获取网络属性 参数1套接字文件描述符 参数2套接字要设置的层次 应用层SOL_SOCKET tcp传输层IPPROTO_TCP udp传输层: IPPROTO_UDP 网络层IPPROTO_IP 参数3指定层内的属性见下表 参数4存放该属性的容器起始地址 参数5参数4的大小 返回值成功返回0失败返回-1并置位错误码 int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); 功能设置网络属性 参数1套接字文件描述符 参数2套接字要设置的层次 应用层SOL_SOCKET tcp传输层IPPROTO_TCP udp传输层: IPPROTO_UDP 网络层IPPROTO_IP 参数3指定层内的属性见下表 参数4设置该属性的容器起始地址 参数5参数4的大小 返回值成功返回0失败返回-1并置位错误码 多点通信 单播
1 单播发生在主机之间一对一的通信模式交换机或者路由器只对数据进行转发不做复制
2 每次只有两个实体之间进行相互通信发送端和接收端都是唯一确定的 广播
1 主机之间的一对多的通信模式网络对其中的每一台主句发出的信息都进行复制并转发
2 所有主机都可以收到广播消息无论你是否愿意接收,所以广播是基于UDP通信模式
3 广播地址网络号 255
例如主机地址为192.168.125.171 --- 192.168.125.255
4 广播消息是不能穿过路由器的也就是说广播消息禁止在外网上进行传播所以广播只能完成局域网内的多点通信 广播的发送端模型 ---- 类似于UDP的客户端
1 socket 创建套接字
2 setsockopt 设置网络属性允许广播
3 bind 非必须绑定
4 填充接收端地址信息结构体
ip填广播地址192.168.125.255
port:与接收端保持一致
5 sendto 发送消息
6 close 关闭套接字 广播的接收端模型 ---- 类似于UDP的服务器端
1 socket 创建套接字
2 填充地址信息结构体
ip:广播地址
port:与发送端保持一致
3 bind 绑定端口号与ip地址
4 recvfrom 接收消息
5 close 关闭套接字
组播
1 组播也是实现主机之间一对多的通信模型跟广播不同的是组播发送的消息只有加入多播组的成员才能收到没有加入的就无法收到不会占用柜台对的网络带宽
2 组播也是使用UDP实现
3 组播地址就是D类网络224.0.0.0 -- 239.255.255.255 组播的发送端模型 ---类似于UDP的客户端
1 socket 创建套接字
2 bind 非必须绑定
3 填充接收端地址信息结构体
ip:组播地址与接收端保持一致
port:与接收端保持一致
4 sendto 发送组播消息
5 close 关闭套接字 组播的接收端模型 --- 类似于UDP的服务器
1 socket 创建套接字
2 setsockopt 设置网络属性
设置层级IPPROTO_IP
设置属性IP_ADD_MEMBERSHIP
属性类型
struct ip_mreqn {
struct in_addr imr_multiaddr; /* IP multicast group address / //组播ip地址
struct in_addr imr_address; / IP address of local interface / //本地IP地址
int imr_ifindex; / interface index */ 网络索引 0表示使用默认网络索引
ip ad:查看自己的网卡索引号 ens33 --- 2
};
3 填充地址信息结构体
ip:组播IP与发送端保持一致
port :与发送端保持一致
4 bind 必须绑定
5 recvfrom 接收消息
6 close 关闭套接字
域套接字相关概念
1 只能在同一主机之间完成多个进程间的通信方式是最原始的套接字通信模型
2 由于不需要借助网络所以在通信时无需使用ip地址和端口号
3 会在内核空间使用 套接字文件 进行通信
4 bcd-lsp 中的s说的就是套接字文件类型
5 socket函数的说明 流式域套接字
1 基于TCP通信原理面向连接的通信方式
2 bind函数只能绑定一个不存在的套接字文件如果绑定的套接字文件存在则bind函数报错Address already in use
3 对于客户端而言如果不绑定一个套接字文件系统不会给客户端绑定套接字文件 流式域套接字服务器端实现
流式域套接字客户端实现 报式域套接字
1 基于UDP面向无连接的通信方式
2 如果客户端没有绑定套接字系统不会为其绑定套接字文件当服务器想要给客户端发消息时怎么办 报式域套接字服务器端
报式域套接字客户端