Since X Windows is essential to the platform-independency of the game, you can't just get rid of it, though. The solution is to handle local actions via X Window protocols but to manage interplayer updates via lower level networking conventions. You got it - sockets and such. I just used my last liter to preserve my spleen, so I have little choice but to start work on the client-server version of xbattle. Here's how the whole client-server deal will work.
Someone starts up the server, which just sits there waiting for clients to connect.
The clients specify most of the game options. Unlike xpilot and netrek, xbattle is by nature a game with a distinct beginning, so players can't just join the game once it has started. The server will have to wait until it's told to start, then prevent additional clients from joining. Upon game startup, the server informs each client of all the engaged options, and delivers a common seed for initialization. Optionally, the server might also perform some form of sanity checking to ensure that the same thing is happening on every game board.