我的未来不是梦 发表于 2020-3-4 03:09:57

[登录器]求助!

刚学C#没多久,用WPF窗口制作了登录器整体UI界面,游戏路径设置写好了,不过服务器状态信息不会写,也没有思路,有会的大佬帮助萌新的吗?
登录器如图:

201724 发表于 2020-3-4 10:39:51

WPF 得用VS2010吧 不然XP用户没得了

https://developer.valvesoftware.com/wiki/Server_Queries
你要同时处理47和48协议的两个版本数据包

我的未来不是梦 发表于 2020-3-4 11:31:22

201724 发表于 2020-3-4 10:39
WPF 得用VS2010吧 不然XP用户没得了

https://developer.valvesoftware.com/wiki/Server_Queries


我用的VS2017 emmm这网址上的弄不大弄,GG

201724 发表于 2020-3-4 11:46:45

我的未来不是梦 发表于 2020-3-4 11:31
我用的VS2017 emmm这网址上的弄不大弄,GG


https://archive.codeplex.com/?p=querymaster

https://github.com/Florian2406/Okolni-Source-Ouery

我的未来不是梦 发表于 2020-3-4 20:42:51

201724 发表于 2020-3-4 11:46
https://archive.codeplex.com/?p=querymaster

https://github.com/Florian2406/Okolni-Source-Ouery ...

这2个源码我昨天下了, 不过 Okolni那个 我编译了dll,然后 引用在 C# Winform测试,有点问题,能帮我解决下吗,搞不大懂,

k1nader 发表于 2020-3-5 04:15:11

我的未来不是梦 发表于 2020-3-4 20:42
这2个源码我昨天下了, 不过 Okolni那个 我编译了dll,然后 引用在 C# Winform测试,有点问题,能帮我解 ...

兼容旧协议呀

我的未来不是梦 发表于 2020-3-5 07:55:58

emmmm。QQ 1031959525,小弟请求大神帮忙 ,万分感谢!

k1nader 发表于 2020-3-5 19:26:56

我的未来不是梦 发表于 2020-3-5 07:55
emmmm。QQ 1031959525,小弟请求大神帮忙 ,万分感谢!

48 协议是 0x49
47 协议是 0x6D

https://developer.valvesoftware.com/wiki/Server_queries#A2S_INFO

看 Obsolete GoldSource Response

k1nader 发表于 2020-3-5 19:29:44

我的未来不是梦 发表于 2020-3-5 07:55
emmmm。QQ 1031959525,小弟请求大神帮忙 ,万分感谢!

你服务器是47/48双协议兼容的话,直接这个异常注释掉 return 就好了。

k1nader 发表于 2020-3-5 19:39:44

我的未来不是梦 发表于 2020-3-4 20:42
这2个源码我昨天下了, 不过 Okolni那个 我编译了dll,然后 引用在 C# Winform测试,有点问题,能帮我解 ...

如果你服务器是47/48兼容的话试试将:

request(Constants.A2S_INFO_REQUEST);
var response = fetchResponse();

var byteReader = response.GetByteReader();
byte header = byteReader.GetByte();

if (header != 0x49)
    throw new ArgumentException("The fetched Response is no A2S_INFO Response.");

改成

request(Constants.A2S_INFO_REQUEST);
var response = fetchResponse();

var byteReader = response.GetByteReader();
byte header = byteReader.GetByte();

if (header != 0x49)
{
    response = fetchResponse();
    byteReader = response.GetByteReader();
    header = byteReader.GetByte();
    if (header != 0x49)
      throw new ArgumentException("The fetched Response is no A2S_INFO Response.");
}
页: [1] 2
查看完整版本: [登录器]求助!