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


int main(int argc, char **argv){
	struct addrinfo hints, *res;
	char *msg = "Hello!";
	int sockfd;
	int len;
	int bytes_sent;
	int ret_val;


	// first, load up address structs with getaddrinfo():
	memset(&hints, 0, sizeof hints);
	hints.ai_family = AF_UNSPEC;
	hints.ai_socktype = SOCK_STREAM;

	if( (ret_val = getaddrinfo("70.162.10.216", "81", &hints, &res) ) != 0){
		printf("failed to get address info!\n");
		fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(ret_val));
		return 2;
	}

	// make a socket:

	if( ( sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol) ) == -1){
		printf("failed to create socket!\n");
		fprintf(stderr, "socket: %s\n", gai_strerror(errno));
		return 2;
	}

	// connect!
	if( (ret_val = connect(sockfd, res->ai_addr, res->ai_addrlen) ) == -1){
		printf("failed to connect!\n");
		fprintf(stderr, "connect: %s\n", gai_strerror(errno));
		return 2;
	}
	
	len = strlen(msg);


	if( ( bytes_sent = send(sockfd, msg, len, 0) ) == -1){
		printf("failed to send data!\n");
		fprintf(stderr, "send: %s\n", gai_strerror(errno));
		return 2;
	}
	
        if(bytes_sent == 0){
                printf("remote client closed connection!\n");
        }else{
                printf("%d bytes sent\n", bytes_sent);
                printf("message: %s\n", (char *)msg);
        }

        printf("done. exiting!\n");

        freeaddrinfo(res);




	return 0;
}
