First post, by Myg
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.
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.