环境:使用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进行广播
答案 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);
}