网络编程之UDP多点通讯

【1】网络属性

man getsockopt
man 3 getsockopt
更新man手册
sudo apt-get install manpages-de  manpages-de-dev  manpages-dev glibc-doc manpages-posix-dev manpages-posix

功能:获取和设置网络属性;
头文件:
       #include <sys/types.h>          /* See NOTES */
       #include <sys/socket.h>
原型:
       int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);
       int setsockopt(int sockfd, int level, int optname,  const void *optval, socklen_t optlen);
    
        int a = 1;
        setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &a, sizeof(a));
        
参数:
    int sockfd:指定要设置/获取属性的套接字;
    int level:指定要控制套接字的层次;
                SOL_SOCKET  应用层,通用套接字选项;            man 7 socket
                IPPROTO_TCP: TCP选项                       man 7 tcp
                IPPROTO_UDP: UDP选项;                      man 7 udp
                IPPROTO_IP:  IP选项;                       man 7 ip
    int optname:指定控制方式;
        以下以 SOL_SOCEKT为例:man 7 socket
            SO_REUSEADDR:允许端口快速重用
            SO_RCVBUF:接收缓冲区大小;
            SO_SNDBUF:发送缓冲区大小;
            SO_BROADCAST:广播;
    void *optval:根据optname的不同,数据类型不同;
    socklen_t* optlen:optval指向的变量的大小;
返回值:
    成功,返回0;
    失败,返回-1,更新errno;            

【2】多点通讯

1. 单播

  1. 注意之间一对一的通信,交换机和路由器对数据只做转发不做复制;

  2. 每次只有两个实体相互通讯,发送端和接收端都是唯一确定的。

2. 广播

1)概念

  1. 主机之间一对多的通信方式,网络对其中每一台主机发出的信息都进行无条件复制并转发;

  2. 所有主机都可以接收到所有信息,无论你是否需要,由于其不用路径选择,所以其网络成本比较低;

  3. 禁止广播数据穿过路由器,防止广播数据造成大面积影响

  4. 只有UDP才能广播

  5. 广播的地址:主机号全是1

    192.168.1.41那么他的广播地址192.168.1.255;

    255.255.255.255 给所有网段中的所有主机发送广播,但是由于广播数据不能穿过路由器,所以实际上是给当前局域网下的主机发送;

2)广播的发送端流程(类似客户端)

  1. 创建报式套接字 (socket)

  2. 可选择绑定也可以不绑定地址信息结构体 (bind)

  3. 设置网络属性:允许广播,如果不设置,默认是不允许的(setsockopt)

  4. 填充广播的地址信息结构体:端口号 IP地址(广播IP 例如192.168.1.255 255.255.255.255)

  5. 发送数据 (sendto)

3)广播的接收端流程(类似服务器)

  1. 创建报式套接字 (socket)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值