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