IP地址问题

时间:2010-03-29 22:38:03

标签: c# .net network-programming

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

2 个答案:

答案 0 :(得分:3)

            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(女巫是我的反作弊项目网站),也可以使用whatsmyip.org/ip.php(我认为是网址)。基本上任何回声只是ip的URL。如果你想自己托管php创建一个php文件并添加这个

echo $_SERVER['HTTP_CLIENT_IP'];

echo $_SERVER['REMOTE_ADDR'];

答案 1 :(得分:3)

首先,我通过在同一台计算机上运行服务器和客户端,并直接使用localhost127.0.0.1作为IP地址来检查以确保任何本地设置和诸如此类设置是正确的。如果这不起作用,则您的代码或本地防火墙出现问题,在查看路由器之前,您必须先修复它。

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

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

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

你最终可以尝试实现upnp,这似乎从快速google search看起来并不复杂,但它可能对于你可能在的学习阶段来说太复杂了。