为何广播失败?
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <errno.h>
int main()
{
int sock=socket(PF_INET,SOCK_DGRAM,0);
if(sock==-1) printf("Create socket error !\r\n");
else {
struct sockaddr_in addr;
int nBroadcast=1; // enable broadcast
setsockopt(sock,SOL_SOCKET,SO_BROADCAST,&nBroadcast,sizeof(int));
addr.sin_family=PF_INET;
addr.sin_addr.s_addr=0;
addr.sin_port=htons(6068);
if(bind(sock,(struct sockaddr*)&addr,sizeof(struct sockaddr))==-1) printf("Bind on port 68 fail.\r\n");
else {
char buf[256];
int nLen;
addr.sin_family=PF_INET;
addr.sin_addr.s_addr=htonl(INADDR_BROADCAST);
addr.sin_port=htons(1067);
strcpy(buf,"send some thing through broadcast udp !");
nLen=sendto(sock,buf,strlen(buf),0,(struct sockaddr*)&addr,sizeof(struct sockaddr));
if(nLen<0) printf("sendto fail. errno=%d\r\n",errno);
else printf("sendto return %d\r\n",nLen);
close(sock);
}
}
return 0;
}
结果为何发送失败?
errno等于101(网络不可到达?)