| 
 | 
 
以下这个程序向受限广播地址255.255.255.255发广播信息出错:Network   is   unreachable   
是什么原因啊?该怎么解决呢,我都弄了好久啊。。。 
 
 
#include<stdio.h>  
#include <stdlib.h>  
#include <errno.h>  
#include <string.h>  
#include <netdb.h>  
#include <sys/types.h>  
#include <netinet/in.h>  
#include <sys/socket.h>  
#define SERVPORT 3333  
#define MAXDATASIZE 100  
int main(void) 
{ 
        int sockfd, recvbytes;  
        int ret; 
        char buf[MAXDATASIZE];  
        struct sockaddr_in serv_addr;  
        int addrlen; 
        int ret1,ret2; 
        const int on = 1; 
//        char ToIP[] = "255.255.255.255"; 
//        char ToIP[] = "192.168.0.230"; 
//        char ToIP[] = "192.168.0.255"; 
 
        printf("version:broadcast,255.255.255.255\n"); 
 
        memset(buf,0,MAXDATASIZE); 
        strcpy(buf,"This is Yaopengfei\n"); 
        if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1){  
                perror("socket�");  
                exit(1);  
        }  
        serv_addr.sin_family=AF_INET;  
        serv_addr.sin_port=htons(SERVPORT);  
 
//以下这部分是给目的IP地址赋值 
//        ret1 = inet_aton(ToIP,&serv_addr.sin_addr); 
//        printf("ret1 is: %d\n",ret1); 
 
        serv_addr.sin_addr.s_addr = htonl(INADDR_BROADCAST); 
        //serv_addr.sin_addr.s_addr = INADDR_BROADCAST; 
        bzero(&(serv_addr.sin_zero),8);  
 
        ret2 = setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(on)); 
        printf("ret2 is:%d\n",ret2); 
 
        ret  = sendto(sockfd,buf,19,0,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr ) ); 
        if( ret<=0 ) 
        { 
                perror("sendto error\n"); 
        } 
        printf("ret is %d\n",ret); 
 
        ret  = recvfrom(sockfd,buf,MAXDATASIZE,0,(struct sockaddr *)&serv_addr,&addrlen ); 
        printf("ret for recv is:%d\n",ret);         
        if( ret<=0 ) 
        { 
                printf("receive error\n"); 
        } 
 
        buf[ret] = '\0';  
        printf("Received: %s",buf);  
        close(sockfd);  
        return 0; 
} 
 
 
运行到sendto时,就提示错误了:Network   is   unreachable 
但是,当我向192.168.0.255发送广播时,就完全OK哦,都可以收到我的server返回的信息呢。。 
 
请问一下各位大虾,这是怎么回事呢?我的系统是linux 2.6(在我的开发板linux2.4.18上面跑也是一样的错误提示哦),IP地址配置为192.168.0.X 
 
谢谢各位了! |   
 
 
 
 |