【问题标题】:(UDP) GVCP BroadCast not functioning(UDP) GVCP 广播不起作用
【发布时间】: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 进行广播

【问题讨论】:

    标签: udp winsock


    【解决方案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);            
                }
    

    【讨论】:

      猜你喜欢
      • 2012-11-09
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 2023-03-21
      • 2017-11-19
      相关资源
      最近更新 更多