SteamQueryNet is a C# wrapper for Steam Server Queries UDP protocol. It is;
- Light
- Dependency free
- Written in .NET 6
Check out SteamQueryNet on nuget.
SteamQueryNet comes with a single object that gives you access to all API's of the Steam protocol which are;
- Server information (server name, capacity etc).
- Concurrent players.
- Server rules (friendlyfire, roundttime etc). Warning: currently does not work due to a protocol issue on steam server query API. Use could make use of ServerInfo.tags if the server admins are kind enough to put rules as tags in the field.
To make use of the API's listed above, an instance of ServerQuery should be created.
IServerQueryserverQuery=newServerQuery();serverQuery.Connect(host,port);or you can use string resolvers like below:
stringmyHostAndPort="127.0.0.1:27015";// ormyHostAndPort="127.0.0.1,27015";// ormyHostAndPort="localhost:27015";// ormyHostAndPort="localhost,27015";// ormyHostAndPort="steam://connect/127.0.0.1:27015";// ormyHostAndPort="steam://connect/localhost:27015";IServerQueryserverQuery=newServerQuery(myHostAndPort);You can provide custom UDP clients by implementing IUdpClient in SteamQueryNet.Interfaces namespace.
See the example below:
publicclassMyAmazingUdpClient:IUdpClient{publicboolIsConnected{get;}publicvoidClose(){// client implementation}publicvoidConnect(IPEndPointremoteIpEndpoint){// client implementation}publicvoidDispose(){// client implementation}publicTask<UdpReceiveResult>ReceiveAsync(){// client implementation}publicTask<int>SendAsync(byte[]datagram,intbytes){// client implementation}}// UsageIPEndpointremoteIpEndpoint=newIPEndPoint(IPAddress.Parse(remoteServerIp),remoteServerPort);IUdpClientmyUdpClient=newMyAmazingUdpClient();IServerQueryserverQuery=newServerQuery(myUdpClient,remoteIpEndpoint);once its created functions below returns informations desired,
ServerInfoserverInfo=serverQuery.GetServerInfo();List<Player>players=serverQuery.GetPlayers();List<Rule>rules=serverQuery.GetRules();- Enable CI