代码之家  ›  专栏  ›  技术社区  ›  Sherif

IP地址问题

  •  1
  • Sherif  · 技术社区  · 15 年前

    我构建了一个Tictactoe游戏应用程序(我使用的是TCP协议),它由服务器和客户端组成(运行两次来代表两个对手)。我有一个问题,我找不到解决办法,这就是我问这个问题的原因。问题是:当客户端尝试连接我的计算机上的服务器时,它从不连接,因为我的计算机的IP地址(从我的Windows中的本地连接的“支持”选项卡中获取)不正确。我试图从告诉你你IP的网站上获取我的IP地址,但我没有工作。我有一个问题来确定我的IP地址,任何机器都可以从任何地方连接到我。 另外,我正在用路由器连接互联网。 谢谢。

    2 回复  |  直到 15 年前
        1
  •  3
  •   Tanzelax    15 年前

    首先,通过在同一台机器上运行服务器和客户机,并使用 localhost 127.0.0.1 直接作为IP地址。如果这不起作用,您的代码或本地防火墙都有问题,在研究路由器之前,您必须先解决这个问题。

    本地防火墙很容易检查,只需完全禁用所有防火墙,看看是否可以连接到本地主机。如果无法完全禁用防火墙连接,则需要首先修复代码。

    如果这确实有效,那么就允许(服务器)应用程序通过防火墙接受流量。打开连接的客户机应用程序本身不会(不应该)有任何防火墙问题,因为这是防火墙通常不会干扰的请求流量。

    如果/当您可以连接到本地主机时,您可以尝试通过Internet、路由器进行连接。最有可能的是,您的问题是您的路由器没有转发您打开到计算机的端口。我自己只手动实现过端口转发,您可能应该研究一下 what this is 为什么在处理事情之前需要你自己。基本上,您希望客户机连接到您的公共IP(从whatsmyip.org或任何地方找到的内容),并希望路由器转发到LAN IP(在局域网配置的“支持”选项卡中找到的内容)。这方面的逐步说明是特定于路由器的,但通常是直接的(在路由器管理页面中通常有“防火墙”和/或“高级”选项卡或其他内容)。

    你最终可以尝试实现UPNP,从一个快速的 google search 但对于你可能正在学习的阶段来说,这可能太复杂了。

        2
  •  3
  •   Art W    15 年前
                string procCall = "http://project-intercept.com/ip.php";
                WebClient wc = new WebClient();
                UTF8Encoding utf8 = new UTF8Encoding();
                string requestHtml = "";
                requestHtml = utf8.GetString(wc.DownloadData(procCall));                
                return requestHtml;
    

    您可以使用project-intercept.com/ip.php(witch是我的反作弊项目站点),也可以使用whatsmyip.org/ip.php(我认为是URL)。基本上,任何Echo的URL都只是IP。如果您想自己托管PHP,请创建一个PHP文件并添加此文件

    echo $_SERVER['HTTP_CLIENT_IP'];
    

    echo $_SERVER['REMOTE_ADDR'];