• 4997阅读
  • 3回复

UDP发送广播 出现网络不可达的错误 为什么啊? [复制链接]

上一主题 下一主题
离线081203119
 
只看楼主 倒序阅读 楼主  发表于: 2011-07-23
setsockopt(this->udpfd,SOL_SOCKET,SO_BROADCAST,&broadcast, sizeof(int))  这个我设置了
我把255.255.255.255 和192.168.1.255两个广播地址都试了,都不能成功
离线081203119
只看该作者 1楼 发表于: 2011-07-23
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#define PORT 2425
#define BUFSIZE 128
int main()
{
    int broadcast=1;
    char buf[256]={"ytityiyuouioiuo"};
    struct sockaddr_in addr,send_addr;
    
    int fd;
    addr.sin_family=AF_INET;
    addr.sin_port=htons(PORT);
    addr.sin_addr.s_addr=htonl(INADDR_ANY);
    if((fd= socket(AF_INET,SOCK_DGRAM,0))<0)
    {
        perror("socket udp error");
        exit(1);
    }

    if(bind(fd,(struct sockaddr *)&addr,sizeof(addr)) <0)
    {
        perror("bind udp error");
        exit(1);
    }

    //setsockopt(this->udpfd,SOL_SOCKET,SO_REUSEADDR,&broadcast,sizeof(broadcast));
    if(setsockopt(fd,SOL_SOCKET,SO_BROADCAST,&broadcast, sizeof(int)) <0)
    {
        perror("setsockopt error");
        exit(1);
    }


    send_addr.sin_family=AF_INET;
    send_addr.sin_port=htons(PORT);
    send_addr.sin_addr.s_addr=htonl(INADDR_BROADCAST);

    if(sendto(fd, buf,strlen(buf), 0, (struct sockaddr*)&send_addr,sizeof(send_addr)) <0)
    {
        perror("sendto error");
        exit(1);
    }
    
    return 0;
}
离线081203119
只看该作者 2楼 发表于: 2011-07-23
回 1楼(081203119) 的帖子
上面这样,运行的时候还是网络不可达啊。。。
离线hehui

只看该作者 3楼 发表于: 2011-07-28
广播功能被关闭?
快速回复
限100 字节
 
上一个 下一个