VOGONS


Dedicated IPXNET + Nullmodem server software (C# .NET 10)

Topic actions

First post, by Myg

User metadata
Rank Newbie
Rank
Newbie

I put together this IPXNET + Nullmodem combo server from scratch recently. It is designed to be as fast, as simple (programmically) and as thread safe as possible.

The downloads are using C# and .NET (https://dotnet.microsoft.com/) from Microsoft .

If you have any suggestions/design comments please don't hesitate to share.

The source was built using Visual Studio 2026 Community edition.

Source Code
Binary Release

To run the Windows version, run "DOSBoxIPXServer" or double click the exe.
To run the Linux + MacOS version, run "dotnet DOSBoxIPXServer.dll"

JSON settings file (manually edit this for your setup):
If you accidentally delete the "Settings.json" file run the program and it will rebuild it in the same directory with default settings.

Settings.json
(default)
--------------------------------------------
{
"IpxnetUdpPort": 213,
"IpxnetUserTimeout": 180,
"IpxnetPingTime": 60000,
"NullmodemTcpPort": 23,
"NullmodemListenBacklog": 30,
"NullmodemInitPoll": 1000000,
"NullmodemRoomJoinWindow": 60000000,
"NullmodemRoomTimeout": 60,
"NullmodemAvailableDelay": 1000,
"ExternalIpRefreshFrequency": 60000
}
--------------------------------------------

I recommend using default settings unless you are having consistant connection errors.
IpxnetUdpPort - UDP port for the IPXNET service.
IpxnetUserTimeout - Number of seconds before a user is deleted from the IPXNET user list.
IpxnetPingTime - Number of milliseconds before a IPXNET ping test is performed (resets the IpxnetUserTimeout for clients who respond).
NullmodemTcpPort - The TCP port which the nullmodem service will use.
NullmodemListenBacklog - The listen backlog for the Nullmodem TCP socket https://learn.microsoft.com/en-us/dotnet/api/ … n?view=net-10.0
NullmodemInitPoll - The polling countdown in microseconds for a basic security feature I use. Increase if you constantly have connection errors.
NullmodemRoomJoinWindow - The player 2 join window in microseconds (60000000 == 60 seconds).
NullmodemRoomTimeout - The number of seconds a nullmodem room has before it is closed and removed from the system.
NullmodemAvailableDelay - This number, in milliseconds, makes sure that the security data is fully received before processing. Increase if you constantly have connection errors.
ExternalIpRefreshFrequency - The number of milliseconds before the server detects if it has a new ipv4 address (for the IPXNET server).

How this works:
IPXNET - Just connect to the server as normal using the IPXNET commands in DOSBOX.
Nullmodem - There is a connection window between the first and second player. The first player connects using the serial + nullmodem command ("serial(port) nullmodem server: (server) port: (port)") and then the server waits for the next player in a given time window. If the time elapses before the second player connects it will reset back to the start and you will need to connect player 1 and 2 again.

Last edited by Myg on 2026-01-02, 02:30. Edited 94 times in total.

Reply 1 of 74, by Yesterplay80

User metadata
Rank Oldbie
Rank
Oldbie

Could you provide a compiled exe, please? I'd like to try it out but don't want to install the whole VS2017 suite just for it.

My full-featured DOSBox SVN builds for Windows & Linux: Vanilla DOSBox and DOSBox ECE (Google Drive Mirror)

Reply 2 of 74, by Myg

User metadata
Rank Newbie
Rank
Newbie

(snip + moved)

Last edited by Myg on 2021-04-18, 22:46. Edited 66 times in total.

Reply 3 of 74, by Myg

User metadata
Rank Newbie
Rank
Newbie

I found a bug in dosbox that sends a packet type of 245 instead of the expected 32 (socket 213 + packetype 32 = 245): This has been causing problems and the inability to connect for some people who arn't on windows 10. I have implemented a work-around and the server should be operating well now (updated all the links).

My greatest apologies for not noticing this earlier.

Last edited by Myg on 2020-11-20, 20:58. Edited 5 times in total.

Reply 4 of 74, by Vulturius

User metadata
Rank Newbie
Rank
Newbie

I've tested it out on my machine:

- running "DOSBoxIPXServerNF 10450 360 60000"
- running DOSBox Instance1 with "ipxnet connect 192.168.1.109 10450"
- running DOSBox Instance2 with "ipxnet connect 192.168.1.109 10450"
- Started up an IPX network game of Warcraft

Everything works great! Nice job!

Future tests I'd like to conduct is to run a server (DOSBoxIPXServerNF 10450 360 60000) and let others join over the internet?
I suspect I only need to open up port 10450 TCP/UDP on my network device?

Other question I have is, how difficult is it to be able to play games in DOXBOX and DOS over network IPX?

Reply 5 of 74, by Myg

User metadata
Rank Newbie
Rank
Newbie

Yep, you only need one UDP port open to the internet for it to work.

I dont know about using DOS and dosbox together.

Reply 7 of 74, by Myg

User metadata
Rank Newbie
Rank
Newbie

If you look at my design, you will see there is no need to restart or reset the server because it uses the internal IPX ping system to check if clients are still connected. I would suggest this functionality be built into the actual DOSBox exe for the IPXNET server itself instead of using a hard coded and limited client list.

Reply 8 of 74, by payfrayweagle

User metadata
Rank Newbie
Rank
Newbie

Hi Myg, how exactly does this dedicated server of yours work?

Reply 10 of 74, by Myg

User metadata
Rank Newbie
Rank
Newbie

New version has been compiled and released (.NET 5).

It should have from 50%-100% more efficiency then the previous version.

Reply 11 of 74, by Myg

User metadata
Rank Newbie
Rank
Newbie

It looks my host has messed up my hosting/domain and the server will complain with an error. If you get this error please wait till I have sorted this issue out with my host.

My apologies for any issues caused.

Reply 12 of 74, by Myg

User metadata
Rank Newbie
Rank
Newbie

Looks like my host fixed the problem, thanks.

Reply 13 of 74, by Myg

User metadata
Rank Newbie
Rank
Newbie

Updated with simplified mathematics.

Reply 14 of 74, by Myg

User metadata
Rank Newbie
Rank
Newbie

Updated with simplified logic and comments removed because the logic is too simple to really need them (unless requested).

Reply 15 of 74, by Myg

User metadata
Rank Newbie
Rank
Newbie

It has come to my attention that certain browsers like Chrome have been unable to download from my links so I am taking steps to correct that. I will update as necessary.

Reply 16 of 74, by Myg

User metadata
Rank Newbie
Rank
Newbie

Updated to Visual Studio 2022 community and .NET 6 (might take a couple hours to refresh).

Reply 17 of 74, by siljo

User metadata
Rank Newbie
Rank
Newbie

This is great!

Can you make one for serial1 nullmodem too?

Reply 19 of 74, by leonardo

User metadata
Rank Oldbie
Rank
Oldbie

Are you aware of ipxgw?

This apparently solves the problem of connecting DOSBox-clients with real DOS/Win9x systems on the LAN.
If you can make use of this solution and make the whole thing run on OpenWrt, you'll be loved by all and songs will be written about you. 😁

[Install Win95 like you were born in 1985!] on systems like this or this.