+ server_host = SDLNet_Read32(&ip.host);
+
+ DrawNetworkText("Connecting to remote host ...");
+ }
+ else
+ {
+ // if no hostname was given and no network server was auto-detected in the
+ // local network, try to connect to a network server at the local host
+ if (server_host == 0)
+ server_host = 0x7f000001; /* 127.0.0.1 */
+
+ SDLNet_Write32(server_host, &ip.host);
+ SDLNet_Write16(port, &ip.port);
+
+ DrawNetworkText("Connecting to local host ...");
+ }
+
+ Error(ERR_DEBUG, "trying to connect to network server at %d.%d.%d.%d ...",
+ (server_host >> 24) & 0xff,
+ (server_host >> 16) & 0xff,
+ (server_host >> 8) & 0xff,
+ (server_host >> 0) & 0xff);
+
+ sfd = SDLNet_TCP_Open(&ip);
+
+ if (sfd)
+ {
+ SDLNet_TCP_AddSocket(rfds, sfd);
+
+ DrawNetworkText_Success("Successfully connected!");
+
+ return TRUE;
+ }
+ else
+ {
+ DrawNetworkText_Failed("Failed to connect to network server!");
+
+ printf("SDLNet_TCP_Open(): %s\n", SDLNet_GetError());
+ }
+
+ if (hostname) /* connect to specified server failed */
+ return FALSE;
+
+ DrawNetworkText("Starting new local network server ...");
+
+ StartNetworkServer(port);
+
+ /* wait for server to start up and try connecting several times */
+ for (i = 0; i < 30; i++)
+ {
+ if ((sfd = SDLNet_TCP_Open(&ip))) /* connected */
+ {
+ DrawNetworkText_Success("Successfully connected!");
+
+ SDLNet_TCP_AddSocket(rfds, sfd);
+ return TRUE;
+ }
+
+ Delay_WithScreenUpdates(100);