socket sendto: Network is unreachable?
金庆
博客专家认证 2003-09-23 04:24:39 以下程序发个广播出错: Network is unreachable
原因是什么? 怎么解决?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
main()
{
int fdUdp = socket(PF_INET, SOCK_DGRAM, 0);
int opt = 1;
int len = sizeof(opt);
setsockopt(fdUdp, SOL_SOCKET, SO_BROADCAST, (char *)&opt, len);
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_port = htons(12345);
bind(fdUdp, (struct sockaddr *)&sin, sizeof(struct sockaddr));
struct sockaddr_in addrBroadCast;
addrBroadCast.sin_family = AF_INET;
addrBroadCast.sin_addr.s_addr = htonl(INADDR_BROADCAST);
addrBroadCast.sin_port = htons(22345);
char aHello[] = "Hello world!";
int res = sendto(fdUdp, aHello, strlen(aHello), 0,
(struct sockaddr *)&addrBroadCast, sizeof(struct sockaddr));
if (res < 0)
perror("sendto");
}