2014-03-19 81 views
0

我的C客户端可以在本地连接到我的服务器,但是当我尝试从远程计算机进行连接时,它不会连接,它会到达“错误连接失败”。C客户端只能连接到本地主机。

我可以从远程机器telnet到服务器。

 char* user_IP; 
      printf("Please enter an IP Address\n"); 
731 
732   scanf(" %s", user_IP); 
733   /*while (isdigit(IP) && IP>0)  // has some isues   
734   {                 
735    printf("Please enter an IP Address\n");      
736                    
737    scanf(" %s", &IP);           
738    }*/ 
739   play_num=2; 
740   IP=atoi(user_IP); 
741 
742 
743   if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) 
744   { 
745    printf("\n Error : Could not create socket \n"); 
746    return 1; 
747   } 
748 
749   memset(&serv_addr,0,sizeof(serv_addr)); 
750   serv_addr.sin_family = AF_INET; 
751   serv_addr.sin_port = htons(5001); 
752 
753   if(connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_a\ 
    ddr)) < 0) 
754   { 
755    printf("\n Error : Connect Failed \n"); 
756    return 1; 
757   } 
+2

'你使用之前user_IP'不指向内存'scanf'。这将明显崩溃。 – zneak

+2

你似乎没有在任何地方使用'IP'变量,并且你已经清零了'serv_addr',所以'serv_addr.sin_addr'为零。另外,'atoi'不是解析IP地址字符串的正确方法;它解析整数;请参阅'inet_aton'。 – TypeIA

+0

那是它不知道我错过了什么简单的感谢! – burblebee

回答

1

有几个问题。

  1. 您没有在连接的任何地方使用过IP地址。

  2. 当您使用scanf()时,您不会存储任何内容。使用类似:

    Char user_IP[16]; 
    
    Scanf("%s", user_IP); 
    
相关问题