Skip to content

Steam Server Query API written in .NET 6

License

Notifications You must be signed in to change notification settings

razaqq/SteamQueryNet

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SteamQueryNet

SteamQueryNet is a C# wrapper for Steam Server Queries UDP protocol. It is;

  • Light
  • Dependency free
  • Written in .NET 6

How to install ?

Check out SteamQueryNet on nuget.

How to use ?

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.

Creating an instance

To make use of the API's listed above, an instance of ServerQuery should be created.

IServerQuery serverQuery = new ServerQuery();
serverQuery.Connect(host, port);

or you can use string resolvers like below:

    string myHostAndPort = "127.0.0.1:27015";
    // or
    myHostAndPort = "127.0.0.1,27015";
    // or
    myHostAndPort = "localhost:27015";
    // or
    myHostAndPort = "localhost,27015";
    // or
    myHostAndPort = "steam://connect/127.0.0.1:27015";
    // or
    myHostAndPort = "steam://connect/localhost:27015";

    IServerQuery serverQuery = new ServerQuery(myHostAndPort);

Providing Custom UDPClient

You can provide custom UDP clients by implementing IUdpClient in SteamQueryNet.Interfaces namespace.

See the example below:

public class MyAmazingUdpClient : IUdpClient
    {
        public bool IsConnected { get; }

        public void Close()
        {
            // client implementation
        }

        public void Connect(IPEndPoint remoteIpEndpoint)
        {
            // client implementation
        }

        public void Dispose()
        {
            // client implementation
        }

        public Task<UdpReceiveResult> ReceiveAsync()
        {
            // client implementation
        }

        public Task<int> SendAsync(byte[] datagram, int bytes)
        {
            // client implementation
        }
    }

    // Usage
    IPEndpoint remoteIpEndpoint = new IPEndPoint(IPAddress.Parse(remoteServerIp), remoteServerPort);

    IUdpClient myUdpClient = new MyAmazingUdpClient();
    IServerQuery serverQuery = new ServerQuery(myUdpClient, remoteIpEndpoint);

once its created functions below returns informations desired,

ServerInfo

ServerInfo serverInfo = serverQuery.GetServerInfo();

Players

List<Player> players = serverQuery.GetPlayers();

Rules

List<Rule> rules = serverQuery.GetRules();

Todos

  • Enable CI

About

Steam Server Query API written in .NET 6

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%