【问题标题】:C client can only connect to localhost.C 客户端只能连接到 localhost。
【发布时间】:2014-04-26 04:42:28
【问题描述】:

我的 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            }

【问题讨论】:

  • user_IP 在使用 scanf 之前不会指向内存。这显然会崩溃。
  • 您似乎没有在任何地方使用IP 变量,并且您已将serv_addr 归零,因此serv_addr.sin_addr 为零。此外,atoi 不是解析 IP 地址字符串的正确方法;它解析整数;请参阅inet_aton
  • 就是不知道我怎么错过了这么简单的东西谢谢!!!

标签: c sockets client telnet


【解决方案1】:

有一些问题。

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

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

    Char user_IP[16];
    
    Scanf("%s", user_IP);
    

【讨论】:

    猜你喜欢
    • 2018-10-02
    • 1970-01-01
    • 2011-05-20
    • 2013-06-25
    • 2019-10-05
    • 1970-01-01
    • 2023-04-05
    • 2013-12-03
    • 2023-04-09
    相关资源
    最近更新 更多