發送UDP數據包時,如何取回系統分配的傳出端口? 在發送下面的數據包之後,我需要立即綁定並聽取它爲我選擇的隨機端口,以獲得對我的廣播的任何響應。發送UDP數據包時,如何取回系統分配的傳出端口? (BSD C插座)
// Open a socket
int sd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
// Enable broadcast
int broadcastEnable=1;
setsockopt(sd, SOL_SOCKET, SO_BROADCAST, &broadcastEnable, sizeof(broadcastEnable));
// Configure the port and ip we want to send to
struct sockaddr_in broadcastAddr; // Make an endpoint
memset(&broadcastAddr, 0, sizeof(broadcastAddr));
broadcastAddr.sin_family = AF_INET;
inet_pton(AF_INET, "239.255.255.250", &broadcastAddr.sin_addr); // Set the broadcast IP address
broadcastAddr.sin_port = htons(1900); // Set port 1900
// Send it
char *request = "M-SEARCH * HTTP/1.1\r\nHOST:239.255.255.250:1900\r\nMAN:\"ssdp:discover\"\r\nST:ssdp:all\r\nMX:1\r\n\r\n";
sendto(sd, request, strlen(request), 0, (struct sockaddr*)&broadcastAddr, sizeof(broadcastAddr));
close(sd);
太簡單了!謝謝。 – Chris 2011-04-05 00:53:32