VB获取指定进程是否有数据接收。
最近在玩一款游戏,长期挂机,但是网络不好老是掉线。我想用VB来写一个程序来监控这个程序是否连接网络,是否在与服务器通讯。不要跟我说用PING这个命令啊,因为游戏服务器是正...
最近在玩一款游戏,长期挂机,但是网络不好老是掉线。我想用VB来写一个程序来监控这个程序是否连接网络,是否在与服务器通讯。不要跟我说用PING这个命令啊,因为游戏服务器是正常的,只是我这边网络差,我只有判断游戏的聊天频道的交易频道是否有信息接收,如果有证明在接收数据,如果聊天窗口没有增加信息就判断游戏掉线。反过来想,网易没有人聊天,岂不是没有数据接收,但是游戏本身可能每隔多久就要向服务器发送一个封包,就会产生流量,哎 搞不懂了,请高手写个详细的代码。谢谢。
展开
1个回答
展开全部
我只提供思路,具体代码自己去找吧,不是很难的.
首先,有两个方法可以做到你说的行为,当然我也建议一些其他的方法
第一,就按你说的 判断聊天频道交易频道是否有新信息的加入,这个只需要反汇编找到添加聊天内容的call,然后用程序实时监控就行了,类似于断点.每下断一次就重置计时器,如果超过一分钟计时器还没清空,就判断掉线...不过明显是一个不好的方法
第二,还是你说的那样,拦截封包,这个用vb也很好弄,而且你也猜对了,游戏每隔几秒就接受一个封包,如果有新数据到达,此时的周期封包必然与之前的有所不同(比如某一位原来是0 现在变成了1),再发送一条接受指令(一些游戏是这样的,也有的是直接接受新信息,如果没有就是空,如果有就直接添加上去,免得二次接受,但也有不好的地方)
其他方法
找出掉线的真正原因,如果真的是因为自己网络不好,那么如果游戏有断线重连机制,你可能是在重连次数期间也没能顺通网络连接,解决方法是:把重练间隔设置长一些,这个通过反汇编就可以达到目的了,如果是因为挂机时间太长无操作导致的,这个太简单了,隔几秒动一下就行了.
如果就只是想判断是否服务器顺畅的话,可以用winsock模拟tcp/udp连接,或者用inet模拟其他方式的连接,判断返回值,具体的连接ip也可以通过反汇编找出来,这样比注入游戏或者拦截游戏封包更安全
.
首先,有两个方法可以做到你说的行为,当然我也建议一些其他的方法
第一,就按你说的 判断聊天频道交易频道是否有新信息的加入,这个只需要反汇编找到添加聊天内容的call,然后用程序实时监控就行了,类似于断点.每下断一次就重置计时器,如果超过一分钟计时器还没清空,就判断掉线...不过明显是一个不好的方法
第二,还是你说的那样,拦截封包,这个用vb也很好弄,而且你也猜对了,游戏每隔几秒就接受一个封包,如果有新数据到达,此时的周期封包必然与之前的有所不同(比如某一位原来是0 现在变成了1),再发送一条接受指令(一些游戏是这样的,也有的是直接接受新信息,如果没有就是空,如果有就直接添加上去,免得二次接受,但也有不好的地方)
其他方法
找出掉线的真正原因,如果真的是因为自己网络不好,那么如果游戏有断线重连机制,你可能是在重连次数期间也没能顺通网络连接,解决方法是:把重练间隔设置长一些,这个通过反汇编就可以达到目的了,如果是因为挂机时间太长无操作导致的,这个太简单了,隔几秒动一下就行了.
如果就只是想判断是否服务器顺畅的话,可以用winsock模拟tcp/udp连接,或者用inet模拟其他方式的连接,判断返回值,具体的连接ip也可以通过反汇编找出来,这样比注入游戏或者拦截游戏封包更安全
.
追问
服务器ip和端口我知道。请老师给个源码,我对vb是个小白。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询