zoukankan      html  css  js  c++  java
  • 广播发送与接收


    //发送端

    #include <iostream>  

    #include <stdio.h>  
    #include <string.h>  
    #include <winsock2.h>
      
    using namespace std;  
      
    int main()  

    {   

        WSADATA wsaData;
        short version = MAKEWORD(2,0);
        WSAStartup(version,&wsaData);//初始化socket

        int sock = -1;  
        if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)   
        {     
            cout<<"socket error"<<endl;   
            return false;  
        }     
          
        const int opt = 1;  
        //设置该套接字为广播类型,  
        int nb = 0;  
        nb = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&opt, sizeof(opt));  
        if(nb == -1)  
        {  
            cout<<"set socket error..."<<endl;  
            return false;  
        }  
      
        struct sockaddr_in addrto;  
        bzero(&addrto, sizeof(struct sockaddr_in));  
        addrto.sin_family=AF_INET;  
        addrto.sin_addr.s_addr=htonl(INADDR_BROADCAST);  
        addrto.sin_port=htons(6000);  
        int nlen=sizeof(addrto);  
      
        while(1)  
        {  
            sleep(1);  
            //从广播地址发送消息  
            char smsg[] = {"broadcast msg"};  
            int ret=sendto(sock, smsg, strlen(smsg), 0, (sockaddr*)&addrto, nlen);  
            if(ret<0)  
            {  
                cout<<"send error...."<<ret<<endl;  
            }  
            else  
            {         
                printf("ok ");    
            }  
        }  
      
        return 0;  

    }  



    //接收端

    #include <iostream>  
    #include <stdio.h>  
    #include <string.h>  
    #include <winsock2.h>
      
    using namespace std;  
      
    int main()  
    {  
        WSADATA wsaData;
        short version = MAKEWORD(2,0);
        WSAStartup(version,&wsaData);//初始化socket

        // 绑定地址  
        struct sockaddr_in addrto;  
        memset(&addrto, 0, sizeof(struct sockaddr_in));  
        addrto.sin_family = AF_INET;  
        addrto.sin_addr.s_addr = htonl(INADDR_ANY);  
        addrto.sin_port = htons(6000);  
          
        // 对端地址  
        struct sockaddr_in from;  
        memset(&from, 0, sizeof(struct sockaddr_in));  
          
        int sock = -1;  
        if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)   
        {     
            cout<<"socket error"<<endl;   
            return false;  
        }     

        const int opt = 1;  
        //设置该套接字为广播类型,  
        int nb = 0;  
        nb = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&opt, sizeof(opt));  
        if(nb == -1)  
        {  
            cout<<"set socket error..."<<endl;  
            return false;  
        }  

        if(bind(sock,(struct sockaddr *)&(addrto), sizeof(struct sockaddr_in)) == -1)   
        {     
            cout<<"bind error..."<<endl;  
            return false;  
        }  

        int len = sizeof(sockaddr_in);  
        char smsg[100] = {0};  

        while(1)  
        {  
            //从广播地址接受消息  
            int ret=recvfrom(sock, smsg, 100, 0, (struct sockaddr*)&from,&len);   
            if(ret<=0)  
            {  
                cout<<"read error...."<<sock<<endl;  
            }  
            else  
            {         
                printf("%s ", smsg);     
            }  

        }  

        return 0;  

  • 相关阅读:
    JVM内存管理概述与android内存泄露分析
    android中activity.this跟getApplicationContext的区别
    Android广播机制概述
    android中shape属性大全
    android studio视频教学
    四十六、android中的Bitmap
    访问限制:由于对必需的库 C:/Program Files/Java/jre6/lib/rt.jar 具有一定限制,因此无法访问类型。。
    优质博客内容链接
    java日期格式大全 format SimpleDateFormat
    java中equals与==的区别
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3223618.html
Copyright © 2011-2022 走看看