(UDP) GVCP 广播不起作用

Posted

技术标签:

【中文标题】(UDP) GVCP 广播不起作用【英文标题】:(UDP) GVCP BroadCast not functioning 【发布时间】:2017-05-31 04:13:01 【问题描述】:

环境:使用 VC++ 2010 进行 Windows Socket 编程

GVCP : GigE 视觉控制协议

GVCP = UDP+(GVCP 标头数据+有效负载数据)。所以基本上它只是一个UDP

为了检测 GigE Sensor(摄像头)需要先广播一个 GVCP 数据包(包含 Gvcp Payload 数据),使用广播地址 255.255.255.255

但是当我更改广播地址 255.255.255.255 时,我只能通过 192.168.1.255 进行广播(如在wire-shark 上看到的),wire-shark 和其他机器上都看不到任何东西

所以问题是无法使用 UDP/WinSock 使用 IP 255.255.255.255 进行广播

【问题讨论】:

【参考方案1】:

能够开始广播 GVCP 数据包,它只是一个套接字创建错误,正确的错误如下

//---------------------DATA SENDER------------------------------
        struct sockaddr_in Sender_addr;
        int     Sender_addrlen      =   sizeof(Sender_addr);    
        Sender_addr.sin_family      = AF_INET;
        Sender_addr.sin_port        = htons(CAMPORT);               //BROADCAST_PORT);
        Sender_addr.sin_addr.s_addr = inet_addr("255.255.255.255"); //Broadcast 
    IP Here");



//---------------------DATA RECEIVER----------------------------
        struct sockaddr_in Recv_addr;
        int     Recv_addrlen        =   sizeof(Recv_addr);
        Recv_addr.sin_family        = AF_INET;
        Recv_addr.sin_port          = htons(PCPORT);
        Recv_addr.sin_addr.s_addr   = INADDR_ANY;

        if(bind(sock,(sockaddr*)&Recv_addr,sizeof(Recv_addr))<0)    
        
            perror("bind");
            _getch;
            closesocket(sock);
        

//and then send command for GVCP packet (GVCP packet Structure is )

        TxBuff[0]   =   0x42;   
        TxBuff[1]   =   0x01;       
        TxBuff[2]   =   0x00;   
        TxBuff[3]   =   0x02;
        TxBuff[4]   =   0x00;   
        TxBuff[5]   =   0x00;
        TxBuff[6]   =   0x00;   
        TxBuff[7]   =   0x02;

    if(sendto(sock,TxBuff,TxBuffSize,0,(struct sockaddr 
    *)&Sender_addr,sizeof(Sender_addr)) <0)
                
                perror("send: error ");
                _getch();
                closesocket(sock);            
            

【讨论】:

以上是关于(UDP) GVCP 广播不起作用的主要内容,如果未能解决你的问题,请参考以下文章

iOS 广播扩展(屏幕广播)不起作用

socket.io:为啥这个广播语句不起作用?

带有活动的广播接收器服务反馈不起作用

为啥我的 SOCKS5 UDP 实现不起作用?

laravel 事件应该广播不起作用

Toast 和广播接收器不起作用