我有這件怪事:UDP廣播不被特定的場合發出
這是我設置了廣播UDP套接字:
int broadcast_enable = 1;
int my_socket;
if ((my_socket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
fprintf(stderr, "ERROR socket\n");
return 0;
}
memset(&my_addr, '\0', sizeof(my_addr));
my_addr.sin_family = AF_INET;
my_addr.sin_addr.s_addr = htonl(INADDR_BROADCAST);
my_addr.sin_port = htons(20007);
setsockopt(my_socket, SOL_SOCKET, SO_BROADCAST, &broadcast_enable, sizeof(broadcast_enable));
這是我發送消息通過這個插座:
int len = sizeof(my_addr);
char buff;
buff = 'b';
if (sendto(my_socket, &buff, sizeof(buff), 0, (struct sockaddr*)&my_addr, len) < 0) {
fprintf(stderr, "ERROR sendto\n");
return 0;
}
我把WireShark放在發送計算機上,並聆聽wifi接口。
1.當我連接到網絡「A」我可以查看消息被從發送方發送的。
2.當我連接到網絡「B」我不能看到從發送者發送的消息。
- 其他廣播消息正在網絡「B」(由其他應用程序)發送和接收。
- 發件人在網絡'B'中有靜態IP。我改變它是非靜態的,我看到了消息被髮送。過了一段時間,我再次嘗試,並沒有發送消息。我無法指出發生的變化。
它搖鈴給任何人?
請告訴你是否需要任何進一步的信息。
我沒有過濾器,同時想看看包。我會嘗試'tcpdump'也 – hudac
好,wireshark沒有顯示真正的捕獲,謝謝! – hudac