2011-08-09 46 views
1

UDP_SERVER我无法在此代码中连接udp服务器和udp客户端?

int main() 
    { 
    int sockfd,clilen; 
    char arr[20]; 
    struct sockaddr_in serv_add,cliaddr; 


    if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0) 
     printf("error"); 
     bzero((char *)&serv_add,sizeof(serv_add)); 
    serv_add.sin_family=AF_INET; 
    serv_add.sin_port=htons(6060); 
    serv_add.sin_addr.s_addr=inet_addr("127.0.0.1"); 


    if(bind(sockfd,(struct sockaddr *)&serv_add,sizeof(serv_add))<0) 
     printf("bind error");  

    //while(1) 
    { 

    //recv(sockfd,&arr,10,0); 
    clilen=sizeof(cliaddr); 
    recvfrom(sockfd,arr,10,0,(struct sockaddr *)&cliaddr,&clilen); 
    printf("%s",arr);  
    } 
close(sockfd); 
return 0; 
} 

UDP_CLIENT

int main() 
    { 
    int sockfd; 
    struct sockaddr_in servaddr,cliaddr; 

    sockfd=socket(AF_INET,SOCK_DGRAM,0); 

    bzero((char *)&servaddr,sizeof(servaddr)); 
    servaddr.sin_family=AF_INET; 
    servaddr.sin_port=6060; 
    servaddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 

    bzero((char *)&cliaddr,sizeof(cliaddr)); 
    cliaddr.sin_family=AF_INET; 
    cliaddr.sin_port=htons(0); 
    cliaddr.sin_addr.s_addr=htonl(INADDR_ANY); 
    //printf("%s") 

    if(bind(sockfd,(struct sockaddr *)&cliaddr,sizeof(cliaddr))<0) 
    printf("error"); 

    sendto(sockfd,"subh.singh",10,0,(struct sockaddr *)&servaddr,sizeof(servaddr)); 
    close(sockfd); 
    return 0; 
    } 

回答

4

在您忘记htons客户端:

servaddr.sin_port=6060; /* Wrong. */ 
servaddr.sin_port = htons(6060); /* Right. */