调用'userConnect()'方法会跳过

时间:2014-03-06 02:09:10

标签: c++ sockets

我发布这个问题是因为我对出了什么问题一无所知。 我最近使用select()API编写了一个客户端 - 服务器交互式文件共享应用程序,作为我的Homework的一部分。 它在我的笔记本电脑上完美运行但我被告知要让它在大学服务器上运行,因为这是我的项目将被测试的地方。我确保我的应用程序正在运行并提交了项目。

当我的应用程序开始关闭时,它调用'getMYIPAddress()'方法来获取主机的本地IP地址,我后来用它来标记自连接。现在的问题是,如果我删除'cout<< '在这种方法中,它跳过'userConnect()'例程。

void getMyIPAddress (char* command, char* port) {
    struct hostent *he;
    struct in_addr ipv4addr;
    char dnsIP[] = "8.8.8.8";                                   // Google DNS IP
    char dnsPort[] = "53" ;                                     // Google DNS TCP Port
    // Converting IP to struct in_addr type     
    inet_pton(AF_INET, dnsIP, &ipv4addr);
    // getting host details from IP address
    he = gethostbyaddr(&ipv4addr, sizeof ipv4addr, AF_INET);
    cout << "BAZINGA!" << endl;
    // Connecting to google DNS to get IP address of this process
    userConnect (he->h_name, dnsPort, port, command);
}

在提交之前,我确实删除了这个不必要的'cout'。现在它不会进入连接到谷歌DNS的userConnect()并转发IP地址。如果我保留它,它可以正常工作。

我没有发布这个问题,浪费你宝贵的时间。如果你能理解可能导致这种情况的原因,你就会减轻我的挫败感。

编辑:: @ Tanmay的答案: “我在cout&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; “'userConnect()'中没有错误,它只是在调用它时才能正常工作。”

编辑:我意识到它出了问题。请参阅后续帖子。

Variable is being changed for some reason

谢谢,萨拉。

1 个答案:

答案 0 :(得分:0)

由于cout,gethostbyaddruserConnect中的错误可能会被解决。最有可能是因为刷新了输出缓冲区。

如果可以,请尝试将其替换为其他代码并分享实验结果。

祝你好运。