: 모든 코드가 아닙니다UDP 소켓 (우분투 9.10)
sock_fd = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
//sock_fd=socket(AF_INET,SOCK_DGRAM,0);
receiver_addr.sin_family = PF_INET;
//does not send with broadcast in ad hoc
receiver_addr.sin_addr.s_addr = htonl(INADDR_BROADCAST);
inet_aton("169.254.255.255",&receiver_addr.sin_addr);
receiver_addr.sin_port = htons(port);
int broadcast = 1;
// this call is what allows broadcast packets to be sent:
if (setsockopt(sock_fd, SOL_SOCKET, SO_BROADCAST, &broadcast,
sizeof broadcast) == -1) {
perror("setsockopt (SO_BROADCAST)");
exit(1);
}
ret=sendto(sock_fd, packet, size, 0,(struct sockaddr*)&receiver_addr,sizeof(receiver_addr));
참고, 그것은 단지입니다 아이디어를 얻으려면.
인프라 무선 네트워크에 연결되어 있으면 프로그램에서 INADDR_BROADCAST를 사용하여 모든 데이터를 보냅니다. 그러나 랩탑이 ad-hoc 네트워크에 연결되어 있으면 모든 데이터를받을 수는 있지만 보내지는 못합니다. 169.254.255.255 브로드 캐스트 주소를 사용하여 문제를 해결했지만 무슨 일이 일어나고 있는지 알고 싶습니다.
미리 감사드립니다.
"보내지 않음"은 함수가 오류를 반환하거나 네트워크의 다른 컴퓨터에서 패킷을 볼 수 없다는 의미입니다. –
tcpdump 또는 wireshark를 시도하고 진행 상황을 알려주십시오. 패킷을 보낼 수 없다고 어떻게 결론 내릴 수 있습니까? – Jack
-1 답신 ... 죄송합니다! – Ekhiotz