예제 #1
0
int
main( int argc, char ** argv )
{
	int			sd;
	struct sockaddr_in	addr;
	char			string[512];
	char			buffer[512];
	char			prompt[] = "Enter a string>>";
	char			output[512];
	int			len;
	char *			func = "main";

	if ( argc < 2 )
	{
		printf( "\x1b[2;31mMust specify server name on command line\x1b[0m\n" );
		return 1;
	}
	set_iaddr_str( &addr, argv[1], CLIENT_PORT );
	printf( "Trying to connect to server. %s ...\n", argv[1] );
	do {
		errno = 0;
		if ( (sd = socket( AF_INET, SOCK_STREAM, 0 )) == -1 )
		{
			printf( "socket() failed in %s()\n", func );
			return -1;
		}
		else if ( connect( sd, (const struct sockaddr *)&addr, sizeof(addr)) == -1 )
		{
			close( sd );
		}
	} while ( errno == ECONNREFUSED );
	if ( errno != 0 )
	{
		printf( "Could not connect to server %s errno %d\n", argv[1], errno );
	}
	else
	{
		printf( "Connected to server %s\n", argv[1] );
		while ( write( 1, prompt, sizeof(prompt) ), (len = read( 0, string, sizeof(string) )) > 0 )
		{
			string[len]= '\0';
			write( sd, string, strlen( string ) + 1 );
			read( sd, buffer, sizeof(buffer) );
			sprintf( output, "Result is >%s<\n", buffer );
			write( 1, output, strlen(output) );
		}
	}
	return 0;
}
예제 #2
0
int main(int argc, char** argv){
	if(argc != 2){
		printf("Error: Server host must be specified as a command line argument.");
		return 0;
	}

	int x = 0;

	char* serverName = argv[1];

	listenFileDescrip = socket(AF_INET, SOCK_STREAM, 0);
	struct sockaddr_in serverAddress;

	set_iaddr_str(&serverAddress, serverName, __SERVER_PORT__);

	while( (x = connect(listenFileDescrip, (const struct sockaddr*) &serverAddress, sizeof(serverAddress)) ) ) {
		printf("Attempting to connect to %s...\n", serverName);
		perror("");
		sleep(3);
	}
 
	//Connected to server.

	printf("Connected to Server.\n");

	pthread_create(&thread, NULL, handler, serverName);
	pthread_detach(thread);

	//Take user input here.
	pthread_create(&inputHandler, NULL, sendInput, NULL);
	pthread_detach(thread);

	while(write(listenFileDescrip, "0", 2) == 2){
		sleep(1);
	}

	//Clean up stuff
	pthread_kill(thread, SIGINT);
	pthread_kill(inputHandler, SIGINT);

	close(listenFileDescrip);

	printf("Disconnected From Server.\n");

	return 0;
}