zoukankan      html  css  js  c++  java
  • 广播实现

    广播范例:

    谁先接受绑定谁。Udp传输都遵循这个规则。

    广播步骤:

    接受:

    1、 创建用户数据包套接字socket()

    2、 绑定本地ip地址和端口bind()

    3、 接受数据recvfrom()

    4、 关闭socketfd(close())

    发送:

    1、 创建用户数据报套接字socket()

    2、 打开广播功能setsockopt();

    Int on=1

    Setsockopt(socketfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(int));

    3、 初始化接受方地址(指定该地址为组播地址192.168.1.255struct sockaddr_in

    4、 发送数据sendto()倒数第二个参数为第二步指定的ipport

    关闭套接字socket();

    代码范例:
    客户端(接受数据)
    #include<stdio.h>
    #include<netinet/in.h>
    #include<stdlib.h>
    #include<string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include<pthread.h>
    #include<strings.h>
    int main()
    {    int socketfd = socket(AF_INET,SOCK_DGRAM,0);//、、、、、1.创建udp套接字 得到socketfd
        struct sockaddr_in saddr;
        memset(&saddr,0,sizeof(saddr));
        saddr.sin_family = AF_INET;
        saddr.sin_port = htons(6000);
        saddr.sin_addr.s_addr = htonl(INADDR_ANY);
        int s = sizeof(struct sockaddr_in);    
        bind(socketfd,(struct sockaddr *)&saddr,s);//、、、、、、、2、绑定本机ip和port;bind()
        struct sockaddr_in caddr;
        char buf1[20];
        int n;
        n = recvfrom(socketfd,buf1,20,0,(struct sockaddr *)&caddr,&s);//、、、、3、接受数据recvfrom()….caddr自动填写的。
            buf1[n] = '';
            printf("%s
    ",buf1);
            
        close(socketfd);//、、、、、、、、、、、、、、、、、4、关闭套接字
    }
    
    服务器(发送数据)
    #include<stdio.h>
    #include<netinet/in.h>
    #include<stdlib.h>
    #include<string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include<pthread.h>
    #include<strings.h>
    
    int main()
    {    int socketfd = socket(AF_INET,SOCK_DGRAM,0);//、、、、、1.创建套接字socket
        struct sockaddr_in saddr;
        memset(&saddr,0,sizeof(saddr));
        saddr.sin_family = AF_INET;
        saddr.sin_port = htons(6000);
        saddr.sin_addr.s_addr = inet_addr("192.168.193.255");
    /*
        int on = 1;
        setsockopt(socketfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(on));//、、、、、2、打开广播功能
        int s = sizeof(struct sockaddr);    
        char *buf = "hello";
        
        sendto(socketfd,buf,strlen(buf),0,(struct sockaddr *)&saddr,s);//3、发送数据saddr为广播地址。
        close(socketfd);
    }
  • 相关阅读:
    Java入门 第二季第三章 继承
    湖南长沙IOS(xcode swift) 开发交流群
    C++对象模型——&quot;无继承&quot;情况下的对象构造(第五章)
    算术与逻辑运算指令具体解释
    linux中man手冊的高级使用方法
    Swift 数组
    webservice Connection timed out
    创建SharePoint 2010 Timer Job
    指向函数的指针数组的使用方法
    修改Tomcat Connector运行模式,优化Tomcat运行性能
  • 原文地址:https://www.cnblogs.com/defen/p/5287636.html
Copyright © 2011-2022 走看看