[英]C++ - Constructing a packet with headers and sending it through a UDP socket
[英]C++ Send packet through UDP but not receiving it
我當前正在從事一個項目,需要每秒將數據包廣播到公共端口D88,但是客戶端無法接收數據包。 我不確定我使用的是正確的方式發送數據包。
int sockfdBroad;
struct sockaddr_in addrBroad;
swStat.packetBroadSent=0;
sockfdBroad=socket(AF_INET,SOCK_DGRAM,0);
bzero(&addrBroad,sizeof(addrBroad));
addrBroad.sin_family = AF_INET;
addrBroad.sin_addr.s_addr=inet_addr("192.168.1.255");
addrBroad.sin_port=htons(3464);
if ((cycles%1000)==0)
{
currenttime = getMicrosTimeStamp();
createTimePacket(bufferTime,currenttime,Odroid_Trigger);
sendto(sockfdBroad,bufferTime,PACKET_LENGTH_TIME,0,(struct sockaddr *)&addrBroad,sizeof(addrBroad));
swStat.packetBroadSent++;
}
假設192.168.1.255的網絡掩碼是255.255.255.0,則192.168.1.255是廣播地址。 從man ip(7)
:
僅當設置了
SO_BROADCAST
套接字標志時,才能發送或接收用於廣播地址的數據報。
換句話說,發送方和接收方都必須執行以下操作:
int value = 1;
if(-1 == setsockopt(socket, SOL_SOCKET, SO_BROADCAST, &value, sizeof value))
// Handle error.
如果檢查sendto
的返回值,則必須為-1且errno == EACCESS
。 始終檢查返回值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.