/*
* pure-client.c : common client process for PURE network service.
*
* $Id: pure-client.c,v 1.1.2.1 2001/11/12 17:31:23 simm Exp $
*/
#include "pure.h"
int pure_client_connect( net_peer* peer )
{
int sock, len;
struct sockaddr_in sv;
struct hostent* hp;
/* get IP address of peer */
if(strchr(peer->name, '.')) {
if ( !(hp = gethostbyname( peer->name )) ) return -1;
peer->address = ntohl( ( (struct in_addr*)hp -> h_addr_list[0] ) -> s_addr );
} else
peer->address = strtoul(peer->name, NULL, 0);
/* make connection */
if ( ( sock = socket( AF_INET, SOCK_STREAM, 0 ) ) < 0 ) return -2;
len = sizeof( sv );
memset( &sv, 0, len );
sv.sin_family = AF_INET;
sv.sin_addr.s_addr = htonl( peer->address );
sv.sin_port = htons( peer->port );
if ( connect( sock, (struct sockaddr*)&sv, len ) < 0 ) return -3;
peer->handle = sock;
printf( "[INFO] Connected\n" );
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1