为何广播失败?

wmrwinhap wmrwinhap 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#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(网络不可到达?)


...全文
评论 5
收藏 已收藏
分享
返回顶部
wmrwinhap
Linux/Unix社区 23,224 成员 74,535 内容