Whoa.. a lot of time since I've been here!!
I started messing around with this query stuff again and I discovered a free .NET query library called GameStat. It works with Soldat and it says Soldat uses ASE (AllSeeingEye) query protocol, Soldat does not have its own query system. In GameStat's page there's information about the responses the ASE query protocol passes you. By studying this response I was able to create a simple query system for Soldat servers, and it is working.
However, the problem with the query Port still remains.
It seems that the server port + 123 rule is valid. I succesfully queried a server running on 23073 via port 23196. And then a server running on 23074 via port 23197.
BUT.. for some servers it won't work, nothing is replied.
I guess it has something to do with firewall/router stuff. Maybe the place where the server is hosted will only allow connections to the game port, what means that the query port remains blocked by their firewall.
One more thing, somebody mentioned that you should send "s" to get the response.
That's true... but I also get the response when I send any other string or even whole words like 'soldat' and etc.
The ingame browser shows a lot of details (like number of bots) that isn't returned when you query the server in the regular query port.
Edit: The GameStat lib can be found here: