【第一次发帖求助】想获取本机的外网地址,来实现tcp打洞

lsbywzh 2011-11-17 10:33:32
现在是这样的,我的服务端和客户端已经在局域网实现了即时通讯,要做tcp打洞,却不知道如何获取本机的外网地址,只能获取内网ip,请各位帮助解答下
...全文
146 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsbywzh 2011-11-17
  • 打赏
  • 举报
回复
公网上要有服务来中转,也就是说如果我的服务端在本机上就无法中转是吗
服务端和客户端都在本机上(因为现在没有两个局域网让我测试)
lsbywzh 2011-11-17
  • 打赏
  • 举报
回复
要是这个网页移除了,那程序不就崴了吗?肯定有一种方法在程序中获取的把
类似Address Dns...
[Quote=引用 2 楼 ck11926375 的回复:]
http://www.ip138.com/ip2city.asp
[/Quote]
lsbywzh 2011-11-17
  • 打赏
  • 举报
回复
只有这样一种方法吗?我看到过这个方法但是觉得这个方法可能存在一些弊端。tcp打洞的方法步骤是客户端连接到服务端,服务端可以解析客户端的公网ip,现在我在客户端通过remoting连接服务端的时候还是只能用内网ip:192.168.1.XXX和127.0.0.1连接,使用外网ip连接服务端是连不上,关了防火墙也一样,何解???[Quote=引用 1 楼 mrlen 的回复:]
我也一直找这种方法。后来真的只能用一个办法,以下是参考:


C# code


WebClient client = new WebClient();

var text = client.DownloadString("http://www.ip.cn/getip2.php?action=getip")
.Replace("</sp……
[/Quote]
ck11926375 2011-11-17
  • 打赏
  • 举报
回复
http://www.ip138.com/ip2city.asp
颤菊大师 2011-11-17
  • 打赏
  • 举报
回复
我也一直找这种方法。后来真的只能用一个办法,以下是参考:


WebClient client = new WebClient();

var text = client.DownloadString("http://www.ip.cn/getip2.php?action=getip")
.Replace("</span> 来自:", " ")
.Replace("<span class='orange'>", string.Empty);
var sp = text.Split(' ');
if(sp.Length == 3)
{
_client = new ClientInfo();
_client.Address = sp[0].Trim();
_client.From = sp[1].Trim();
_client.Netline = sp[2].Trim();
lLineDisplay.Text = _client.From + "\r\n" + _client.Address + " " + _client.Netline;
radioGroup1.EditValue = _client.GetRemotingAddress();
}

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧