Foxtable(狐表)用户栏目专家坐堂 → 如何用代码获取本机的外网IP地址?


  共有2220人关注过本帖树形打印复制链接

主题:如何用代码获取本机的外网IP地址?

帅哥哟,离线,有人找我吗?
andy-1024
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:182 积分:1592 威望:0 精华:0 注册:2016/11/10 10:14:00
如何用代码获取本机的外网IP地址?  发帖心情 Post By:2019/6/28 14:31:00 [只看该作者]

老师好,我现在用的网络都没有静态IP,都是随机分配的,而且外网IP只有一个。而阿里云服务器是静态的IP地址,也就是说我分店的所有电脑都可以通过IP访问阿里云,而阿里云服务器无法回访本地机器。
出于程序需要,怎么样能通过代码获取本地的外网IP,然后进一步怎么样能通过内网IP确定是哪一台机器?
比如说,我分店服务器内网IP是192.168.8.104,外网IP不知道,现在需要我阿里云上的软件对这个分店服务器发送一个指令(比如更新数据提醒),要如何实现?
谢谢。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/28 15:07:00 [只看该作者]

你分店服务器定时访问阿里云,上报自己的ip地址即可。

 

获取外网ip,参考

 

Dim req = System.Net.WebRequest.Create("http://www.ip138.com")
req.UserAgent = "Mozilla/5.0 (Windows NT 6.3; rv:57.0) Gecko/20100101 Firefox/57.0"
Dim pos = req.GetResponse
Dim stm As System.IO.Stream = pos.GetResponseStream()
Dim reader As New System.IO.StreamReader(stm,Encoding.Default)
Dim str As String = reader.ReadToEnd
pos.Close
stm.Close
reader.close

Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=iframe src="").*?(?="" rel)")
msgbox(mc(0).value)
Dim hc As New HttpClient(mc(0).value)
Dim ret = hc.GetData()

mc = System.Text.RegularExpressions.Regex.Matches(ret , "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
If mc.count > 0 Then
    msgbox(mc(0).value)
End If


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/28 15:12:00 [只看该作者]

或者换一种思路。

 

你两个服务器之间,通过什么方式通信的?如果用openqq或者udp,不是可以获取对方ip地址的么?

 

也就是你内网服务器请求阿里云的时候,发送信息,就可以获取其ip地址的。

 

http://www.foxtable.com/webhelp/topics/3003.htm

 

http://www.foxtable.com/webhelp/topics/3005.htm

 


 回到顶部