2014-03-19 82 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); 
    
相關問題