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;
}