All pastes #127408 Raw Edit

Mine

public text v1 · immutable
·published 2006-08-12 05:34 UTC
rendered paste body
#include <windows.h>
#include <stdio.h>

#include "csocket.h"

csocket::csocket()
: m_s(-1), b_ssl(false)
{

}

/*   Taken From AgoBot. - OG  */
unsigned long ResolveHost(const char *szHost)
{
	unsigned long IP = inet_addr(szHost);
	if (IP==INADDR_NONE) 
	{
		struct hostent *pHE = gethostbyname(szHost);
		if (pHE == 0) 
			return INADDR_NONE;
		IP = *((unsigned long *)pHE->h_addr_list[0]);	
	}
	return IP;
}

bool csocket::connect(const char *host, unsigned short port, bool use_ssl)
{
	struct sockaddr_in sin;
	memset(&sin, 0, sizeof(sockaddr));

	sin.sin_family	= AF_INET;
	sin.sin_port	= htons(port);
	sin.sin_addr.s_addr = ResolveHost(host);

	if ((m_s = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
	{
		disconnect();
		return false;
	}

	if (::connect(m_s,(sockaddr*)&sin, sizeof(sockaddr)) == SOCKET_ERROR)
	{
		disconnect();
		return false;
	}

	return true;
}

void csocket::disconnect()
{
	::closesocket(m_s);
	m_s = -1;
}


int csocket::recv(char *buf, int len)
{
	int ret = ::recv(m_s, buf, len, 0);

	if (ret <= 0)
		disconnect();

	return ret;
}


int csocket::send(const char *buf, int len)
{
	int ret = ::send(m_s, buf, len, 0);

	if (ret == -1)
		disconnect();

	return ret;
}