(UDP)GVCP广播不起作用
环境:使用VC++2010进行Windows Socket编程 GVCP:GigE视觉控制协议 GVCP=UDP+(GVCP头数据+有效负载数据)。所以基本上,它只是一个UDP 为了检测GigE传感器(摄像头),需要首先使用广播地址255.255.255.255广播GVCP数据包(包含GVCP有效载荷数据) 但当我更改广播地址255.255.255.255.255时,我只能通过192.168.1.255(如wire shark上所示)进行广播。wire shark上和其他机器上都看不到任何内容(UDP)GVCP广播不起作用,udp,winsock,Udp,Winsock,环境:使用VC++2010进行Windows Socket编程 GVCP:GigE视觉控制协议 GVCP=UDP+(GVCP头数据+有效负载数据)。所以基本上,它只是一个UDP 为了检测GigE传感器(摄像头),需要首先使用广播地址255.255.255.255广播GVCP数据包(包含GVCP有效载荷数据) 但当我更改广播地址255.255.255.255.255时,我只能通过192.168.1.255(如wire shark上所示)进行广播。wire shark上和其他机器上都看不到任何内容
所以问题是无法使用IP 255.255.255.255使用UDP/WinSock进行广播无法开始广播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);
}
/--------------数据发送方------------------------------
发送方地址中的结构sockaddr\u;
int Sender\u addrlen=sizeof(Sender\u addr);
发送方地址sin家庭=AF网络;
发送方地址sin港口=htons(营地)//广播(港),;
发送方地址sin地址s地址=inet地址(“255.255.255.255”)//广播
知识产权(此处为“);
//---------------------数据接收器----------------------------
Recv_addr中的结构sockaddr_;
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\u ANY;
if(绑定(sock,(sockaddr*)和Recv_addr,sizeof(Recv_addr))