+#if defined(TARGET_SDL)
+boolean ConnectToServer(char *hostname, int port)
+{
+ IPaddress ip;
+ int i;
+
+ if (port == 0)
+ port = DEFAULT_SERVER_PORT;
+
+ rfds = SDLNet_AllocSocketSet(1);
+
+ if (hostname)
+ {
+ SDLNet_ResolveHost(&ip, hostname, port);
+ if (ip.host == INADDR_NONE)
+ Error(ERR_EXIT, "cannot locate host '%s'", hostname);
+ }
+ else
+ {
+ SDLNet_Write32(0x7f000001, &ip.host); /* 127.0.0.1 */
+ SDLNet_Write16(port, &ip.port);
+ }
+
+ sfd = SDLNet_TCP_Open(&ip);
+
+ if (sfd)
+ {
+ SDLNet_TCP_AddSocket(rfds, sfd);
+ return TRUE;
+ }
+ else
+ {
+ printf("SDLNet_TCP_Open(): %s\n", SDLNet_GetError());
+ }
+
+ if (hostname) /* connect to specified server failed */
+ return FALSE;
+
+ printf("No rocksndiamonds server on localhost -- starting up one ...\n");
+ StartNetworkServer(port);
+
+ /* wait for server to start up and try connecting several times */
+ for (i = 0; i < 6; i++)
+ {
+ Delay(500); /* wait 500 ms == 0.5 seconds */
+
+ if ((sfd = SDLNet_TCP_Open(&ip))) /* connected */
+ {
+ SDLNet_TCP_AddSocket(rfds, sfd);
+ return TRUE;
+ }
+ }
+
+ /* when reaching this point, connect to newly started server has failed */
+ return FALSE;
+}
+
+#else
+