以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教如何通过OPENQQ功能返回本机客户端IP  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77177)

--  作者:supwork
--  发布时间:2015/11/12 12:32:00
--  请教如何通过OPENQQ功能返回本机客户端IP

请教如何通过OPENQQ功能返回本机客户端IP

客户端向服务端发送一个消息,收到回程消息时如何获取客户端的IP

 


--  作者:大红袍
--  发布时间:2015/11/12 14:27:00
--  

客户端登陆的时候,直接给服务器发送其ip地址。

 

ip地址如下获取

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=59092&skin=0

 

 


--  作者:狐狸爸爸
--  发布时间:2015/11/12 14:42:00
--  

QQServer有个Users集合,包括所有登录用户(QQUser)。

QQUser有两个没有公开,但是非常有用的属性

 

WanIPAddress: 返回登录者的广域网IP,如果服务器和客户端不是同一个局域网的话、
LanIPAddress:  返回登录者的局域网IP

[此贴子已经被作者于2015/11/12 14:42:01编辑过]

--  作者:supwork
--  发布时间:2015/11/13 17:01:00
--  

If e.Message = "GetDate" Then
    e.ReturnValue = Date.Now
End If

 

这个可以返回系统时间

 

那么想用

If e.Message = "GetWanIp" Then

  e.ReturnValue = ?????.WanIPAddress

End If

 

这个应如何写


--  作者:大红袍
--  发布时间:2015/11/13 17:08:00
--  
QQserver.Users(e.UserName).WanIPAddress
--  作者:supwork
--  发布时间:2015/11/13 18:39:00
--  
我郁闷了,原以为有了OPENQQ后可以获取准确的IP地址
但是返回值还是有问题
系统中四个网卡
一个无线网卡:活动有连接的 IP为192.168.1.83
一个有线网卡:没有连接,系统未分配IP
一个虚拟机网卡:没有开虚拟机 系统分配IP为192.168.128.1
一个虚拟机网卡:没有开虚拟机 系统分配IP为10.10.10.1
这样的测试环境:系统返回 广域网IP为192.168.1.83  局域网IP:192.168.128.1

修改测试环境:关闭两个虚拟机网卡(说明,虚拟机网卡如果没禁用,就算是虚拟机不开,虚拟机网卡也是启用状态,用IPCONFIG命令可以查看到系统有分配IP)
此时测试
一个无线网卡:活动有连接的 IP为192.168.1.83
一个有线网卡:没有连接,系统未分配IP
这样的测试环境:系统返回 广域网IP为192.168.1.83  局域网IP:192.168.1.83

请官方看看这样的返回结果是不是有点问题?
问题补充:如果启动虚拟网卡后,再启动FT系统则返回的局域网IP成了192.168.128.1  显然这是个伪地址.在服务器上 ping 192.168.128.1根本拼不通呀
 
如果先禁用虚拟网卡,再启动FT系统,再启用虚拟网卡,则测试 返回的地址为:192.168.1.83
 

图片点击可在新窗口打开查看此主题相关图片如下:1113001.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:1113002.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2015/11/13 18:49:43编辑过]

--  作者:大红袍
--  发布时间:2015/11/13 19:18:00
--  

Dim cmd As  new Process()
cmd.StartInfo.FileName = "tracert"
cmd.StartInfo.Arguments = "-h 1 www.baidu.com"

cmd.StartInfo.RedirectStandardOutput = True
cmd.StartInfo.RedirectStandardInput = True
cmd.StartInfo.UseShellExecute = False
cmd.StartInfo.CreateNoWindow = True

cmd.Start()
Dim info As String = cmd.StandardOutput.ReadToEnd()
msgbox(Info)

 


--  作者:supwork
--  发布时间:2015/11/13 19:23:00
--  
这代码执行起来 在我的电脑上要5.5秒
--  作者:黑苹果
--  发布时间:2015/11/14 18:32:00
--  
正需要这个功能,最佳方案是啥