tôi viết một chương trình sử dụng phân khúc broadcast.Code udp như sau:UDP Broadcast sendto thất bại: "mạng là unreachable" trên Linux 2.6.30
struct sockaddr_in broadcast_addr;
socklen_t sock_len=sizeof(broadcast_addr);
bzero(&broadcast_addr,sock_len);
broadcast_addr.sin_family=AF_INET;
broadcast_addr.sin_port=12345;
broadcast_addr.sin_addr.s_addr=inet_addr("255.255.255.255");
int fd=socket(AF_INET,SOCK_DGRAM,0);
int broadcast_enable=1;
setsockopt(fd,SOL_SOCKET,SO_BROADCAST,&broadcast_enable,sizeof(broadcast_enable));
uint8_t send_buf[100];
int ret=sendto(fd,send_buf,sizeof(send_buf),0,
(struct sockaddr*)&broadcast_addr,sock_len);
if(ret==-1)
perror("sendto failed");
đầu ra:
sendto failed: Network is unreachable
Nhưng khi tôi chạy lệnh "add default gateway" như "route add default gw 10.10.10.111", lỗi biến mất. Khi thiết lập ipaddress mới thành netdev, lệnh như trên sẽ được chạy, nếu không thì lỗi sẽ xuất hiện. Tại sao? Cảm ơn.