0


广播、组播

1.广播

向子网中多台计算机发送消息,并且子网中所有的计算机都可以接收到发送方发送的消息,每个广播消息都包含一个特殊的IP地址,这个IP中子网内主机标志部分的二进制全部为1。
a.只能在局域网中使用。
b.客户端需要绑定服务器广播使用的端口,才可以接收到广播消息。

// 设置广播属性的函数intsetsockopt(int sockfd,int level,int optname,constvoid*optval, socklen_toptlen);- sockfd : 文件描述符
    - level : SOL_SOCKET
    - optname : SO_BROADCAST
    - optval :int类型的值,为1表示允许广播
    - optlen : optval的大小

2.组播(多播)

单播地址标识单个 IP 接口,广播地址标识某个子网的所有 IP 接口,多播地址标识一组 IP 接口。单播和广播是寻址方案的两个极端(要么单个要么全部),多播则意在两者之间提供一种折中方案。多播数据报只应该由对它感兴趣的接口接收,也就是说由运行相应多播会话应用系统的主机上的接口接收。另外,广播一般局限于局域网内使用,而多播则既可以用于局域网,也可以跨广域网使用。
a.组播既可以用于局域网,也可以用于广域网
b.客户端需要加入多播组,才能接收到多播的数据

intsetsockopt(int sockfd,int level,int optname,constvoid*optval,socklen_t optlen);// 服务器设置多播的信息,外出接口- level : IPPROTO_IP
    - optname : IP_MULTICAST_IF
    - optval :structin_addr// 客户端加入到多播组:- level : IPPROTO_IP
    - optname : IP_ADD_MEMBERSHIP
    - optval :structip_mreqstructip_mreq{/* IP multicast address of group. */structin_addr imr_multiaddr;// 组播的IP地址/* Local IP address of interface. */structin_addr imr_interface;// 本地的IP地址};typedefuint32_tin_addr_t;structin_addr{in_addr_t s_addr;};

3.本地套接字

本地套接字的作用:本地的进程间通信
有关系的进程间的通信
没有关系的进程间的通信
本地套接字实现流程和网络套接字类似,一般呢采用TCP的通信流程。

// 本地套接字通信的流程 - tcp// 服务器端1. 创建监听的套接字
    int lfd =socket(AF_UNIX/AF_LOCAL, SOCK_STREAM,0);2. 监听的套接字绑定本地的套接字文件 -> server端
    structsockaddr_un addr;// 绑定成功之后,指定的sun_path中的套接字文件会自动生成。bind(lfd, addr, len);3. 监听
    listen(lfd,100);4. 等待并接受连接请求
    structsockaddr_un cliaddr;int cfd =accept(lfd,&cliaddr, len);5. 通信
    接收数据:read/recv
    发送数据:write/send
6. 关闭连接
    close();// 客户端的流程1. 创建通信的套接字
    int fd =socket(AF_UNIX/AF_LOCAL, SOCK_STREAM,0);2. 监听的套接字绑定本地的IP 端口
    structsockaddr_un addr;// 绑定成功之后,指定的sun_path中的套接字文件会自动生成。bind(lfd, addr, len);3. 连接服务器
    structsockaddr_un serveraddr;connect(fd,&serveraddr,sizeof(serveraddr));4. 通信
    接收数据:read/recv
    发送数据:write/send
5. 关闭连接
    close();// 头文件: sys/un.h#defineUNIX_PATH_MAX108structsockaddr_un{sa_family_t sun_family;// 地址族协议 af_localchar sun_path[UNIX_PATH_MAX];// 套接字文件的路径, 这是一个伪文件, 大小永远=0};
标签: 网络 服务器 linux

本文转载自: https://blog.csdn.net/y_bra_ke/article/details/132497355
版权归原作者 y_bra_ke 所有, 如有侵权,请联系我们删除。

“广播、组播”的评论:

还没有评论