-#else
-
-boolean ConnectToServer(char *hostname, int port)
-{
- struct sockaddr_in s;
- struct protoent *tcpproto;
- int on = 1, i;
-
- if (hostname)
- {
- if ((s.sin_addr.s_addr = inet_addr(hostname)) == -1)
- {
- struct hostent *host;
-
- if ((host = gethostbyname(hostname)) == NULL)
- Error(ERR_EXIT, "cannot locate host '%s'", hostname);
-
- s.sin_addr = *(struct in_addr *)(host->h_addr_list[0]);
- }
- }
- else
- s.sin_addr.s_addr = inet_addr("127.0.0.1"); /* localhost */
-
- if (port == 0)
- port = DEFAULT_SERVER_PORT;
-
- s.sin_port = htons(port);
- s.sin_family = AF_INET;
-
- sfd = socket(PF_INET, SOCK_STREAM, 0);
- if (sfd < 0)
- Error(ERR_EXIT, "out of file descriptors");
-
- if ((tcpproto = getprotobyname("tcp")) != NULL)
- setsockopt(sfd, tcpproto->p_proto, TCP_NODELAY, (char *)&on, sizeof(int));
-
- if (connect(sfd, (struct sockaddr *)&s, sizeof(s)) == 0) /* connected */
- return TRUE;
-
- 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 */
- close(sfd);
-
- sfd = socket(PF_INET, SOCK_STREAM, 0);
- if (sfd < 0)
- Error(ERR_EXIT, "out of file descriptors");
-
- setsockopt(sfd, tcpproto->p_proto, TCP_NODELAY, (char *)&on, sizeof(int));
-
- if (connect(sfd, (struct sockaddr *)&s, sizeof(s)) >= 0) /* connected */
- return TRUE;
- }
-
- /* when reaching this point, connect to newly started server has failed */
- return FALSE;
-}
-#endif /* defined(TARGET_SDL) */
-