(UDP)GVCP BroadCast无法正常运行

时间:2017-05-31 04:13:01

标签: udp winsock

环境:使用VC ++ 2010进行Windows套接字编程

GVCP:GigE视觉控制协议

GVCP = UDP +(GVCP标头数据+有效载荷数据)。所以基本上只有它的UDP

用于检测GigE传感器(摄像头)需要首先使用广播地址255.255.255.255广播GVCP数据包(包含Gvcp有效载荷数据)

但是当我更改广播地址255.255.255.255时,我只能通过192.168.1.255(在线鲨上看到)进行广播。在线鲨上和其他机器上都看不到任何内容

因此无法使用UDP / WinSock使用IP 255.255.255.255进行广播

1 个答案:

答案 0 :(得分:0)

能够开始广播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);            
            }