For some reason, I can't seem to connect. I'm using Winsock.

This is my client program:
Code:
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#pragma lib "ws2_32.lib"

int main()
{
	char recvstuff[100];
	char sendstuff[100];
	char ip[100];

	printf("type friend's ip address: ");
	fgets(ip, 25, stdin);


	// intialise winsock

	WSADATA wsaData;
	if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
	{
		printf("error one");
		getchar();
		exit(1);
	}


	// getaddrinfo call

	struct addrinfo *result = NULL, *ptr = NULL, hints;

	ZeroMemory(&hints, sizeof (hints));
	hints.ai_family=AF_UNSPEC;
	hints.ai_socktype=SOCK_STREAM;
	hints.ai_protocol=IPPROTO_TCP;
	
	if (getaddrinfo(ip, "7772", &hints, &result) != 0)
	{
		printf("error two");
		getchar();
		exit(1);
	}

	int sock;
	
	// make a socket
	ptr=result;

	sock=socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol);

	if (sock == -1)
	{
		printf("error three");
		getchar();
		exit(1);
	}

	// connect to a server
	if (connect(sock, ptr->ai_addr, (int)ptr->ai_addrlen) == -1)
	{
		printf("error four");
		getchar();
		exit(1);
	}

	printf("connected\n\n\n\n");

	freeaddrinfo(result);

	// main send and recieve loop

	while (strcmp(fgets(sendstuff, 102, stdin), "exit\n") != 0)
	{

		while (strcspn(sendstuff, "\n") == 102)
		{
			fgets(sendstuff, 102, stdin);
			if (send(sock, sendstuff, sizeof (sendstuff), 0) == -1)
			{
				printf("error five");
				getchar();
				exit(1);
			}
		}

		if (send(sock, sendstuff, sizeof (sendstuff), 0) == -1)
		{
			printf("error six");
			getchar();
			exit(1);
		}

		if (recv(sock, recvstuff, 100, 0) == -1)
		{
			printf("error seven");
			getchar();
			exit(1);
		}
		printf("%s\n", recvstuff);
	}

	// shut down winsock and end program

	closesocket(sock);

	WSACleanup();

	return 0;
}
and this is the server program:

Code:
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#pragma lib "ws2_32.lib"

int main()
{
	char recvstuff[100];
	char sendstuff[100]="hi daniel!";

	// intialise winsock

	WSADATA wsaData;
	if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
	{
		printf("WSAStartup failed\n\n");
		exit(1);
	}


	// getaddrinfo call

	struct addrinfo *result=NULL, hints;

	ZeroMemory(&hints, sizeof (hints));
	hints.ai_family=AF_INET;
	hints.ai_socktype=SOCK_STREAM;
	hints.ai_protocol=IPPROTO_TCP;
	hints.ai_flags=AI_PASSIVE;

	if (getaddrinfo(NULL, "7772", &hints, &result) != 0)
	{
		printf("getaddrinfo failed\n\n");
		exit(1);
	}



	// make a socket

	int sock=socket(result->ai_family, result->ai_socktype, result->ai_protocol);

	if (sock == -1)
	{
		printf("socket failed\n\n");
		exit(1);
	}




	// bind the socket

	if (bind(sock, result->ai_addr, result->ai_addrlen) == -1)
	{
		printf("bind failed\n\n");
		exit(1);
	}

	freeaddrinfo(result);



	// listen on the socket

	if (listen(sock, SOMAXCONN) == -1)
	{
		printf("listen failed\n\n");
		exit(1);
	}



	// wait for connection

	int mainsock;

	mainsock=accept(sock, NULL, NULL);

	if (mainsock == -1)
	{
		printf("accept failed");
		exit(1);
	}

	printf("connected\n\n\n\n");

	closesocket(sock);

	while (recv(mainsock, recvstuff, 100, 0) != -1)
	{

		if (send(mainsock, sendstuff, sizeof (sendstuff), 0) == -1)
		{
			printf("send failed\n\n");
			exit(1);
		}

		printf("%s", recvstuff);
	}

	printf("they exited");
	getchar();

	closesocket(mainsock);
	WSACleanup();
	return 0;
}
run the server before the client, and when you run the client, type the ip of the server then just type like an IMing service