#include <unistd.h>
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>

void usage() {
  fprintf( stderr, "\nusage: client ip-address port\n\n\
Parameters ip-address and port are for the machine which the nameserver \
runs on.\n\n" );
  exit( 1 );
}

int main(int argc, char* argv[]) {
	
	int sock;
	int ret;
	struct sockaddr_in servaddr;
	char buffer[255], input[255];

	if( argc != 3 ) usage();
	
	if( (sock = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) {
		perror("socket() error");
		exit(1);
	}
	
	servaddr.sin_family = AF_INET;
	servaddr.sin_addr.s_addr = htonl(inet_addr(argv[1]));
	servaddr.sin_port = htons(atoi(argv[2]));
	if( (ret = connect(sock, (struct sockaddr *) &servaddr,\
	      			sizeof(servaddr) )) < 0 ) {
		perror("connect() error");
		exit(1);
	}
	
	do {
	  printf( "Bitte geben Sie ein Kommando ein: " );
	  gets( input );
	  strcat( input, "\r\n" );

      	  write(sock, input, strlen(input));

	  ret = read(sock, (void *) &buffer, sizeof(buffer));
	  buffer[ret] = '\0';
	
	  printf("Reply: %s\n", buffer);

	} while( strcmp( input, "Q\r\n" ) );
	close(sock);

	return 0;
}
