All pastes #419189 Raw Edit

Stuff

public cpp v1 · immutable
·published 2007-04-01 03:41 UTC
rendered paste body
#include "stdafx.h"#include <winsock2.h>#include <iostream>// specifics to hook up to the US Naval Observatory#define IP_ADDRESS "127.0.0.1"#define IP_PORT 12934#define HTTPGET "GET /cgi-bin/timer.pl \r\n\r\n\0"// define buffer size#define RECVBUFF_SIZE 500// set up sockets infoWSAData wsaData;SOCKET m_socket;sockaddr_in serverAddr;int isSocketOK(int retValue, TCHAR * msg){	if (retValue!=SOCKET_ERROR)		return TRUE;	std::wcout << msg <<_TEXT(": ")<< WSAGetLastError() << _TEXT("\n");	WSACleanup();	return FALSE;}void showWSAData(WSAData * wsad){	// to show what the wsadata looks like	std::wcout << "wVersion:       " << wsad->wVersion << "\n";	std::wcout << "wHighVersion:   " << wsad->wHighVersion << "\n";	std::wcout << "szDescription:  " << wsad->szDescription << "\n";	std::wcout << "szSystemStatus: " << wsad->szSystemStatus << "\n";	std::wcout << "iMaxSockets:    " << wsad->iMaxSockets << "\n";	std::wcout << "iMaxUdpDg:      " << wsad->iMaxUdpDg << "\n";}int _tmain(int argc, _TCHAR* argv[]){	int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);	if(iResult != NO_ERROR)	{		std::wcout << L"Error at Socket startup\n" << iResult << L"\n";		return -1;	}	showWSAData(&wsaData);	m_socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);	if(m_socket == INVALID_SOCKET)	{		std::wcout << L"Error in socket" << WSAGetLastError() << "\n";		WSACleanup();		return -1;	}	std::wcout << L"Socket Created\n";	serverAddr.sin_family = AF_INET;	serverAddr.sin_addr.s_addr = inet_addr(IP_ADDRESS);	serverAddr.sin_port = htons(IP_PORT);	if (!isSocketOK(connect(m_socket,	        (SOCKADDR*) &serverAddr, 	        sizeof(serverAddr)	        ),_TEXT("Connection Error"))) return -1;	std::wcout << "Connected\n";	// we want to send the GET command and receive the data back for this	// simple client	TCHAR sendBuff[32] = _T(HTTPGET);	for(int i=0; i<5; ++i)	{		int bytesSent = send(m_socket,sendBuff,(int)_tcslen(sendBuff)*sizeof(TCHAR),0);		if(!isSocketOK(bytesSent,_T("Send Failed"))) return -1;		std::wcout << "GET request sent to server\n";		TCHAR recvBuff[RECVBUFF_SIZE+1];		int buffLen = RECVBUFF_SIZE*sizeof(TCHAR);		int bytesRecvd = recv(m_socket,recvBuff,buffLen,0);		if(!isSocketOK(bytesRecvd,_T("Receive failed"))) return -1;		std::wcout << bytesRecvd << " bytes of data received\n";		// zero terminate the buffer for printing		recvBuff[bytesRecvd] = 0;		std::wcout << _T(recvBuff) << _T("\n");		Sleep(3000);		if(WSAGetLastError() == WSAECONNRESET)		{			std::wcout << L"Server dropped the connection\n";			break;		}		else		{			if(!isSocketOK(bytesRecvd,_TEXT("Send/Receive Failed"))) return -1;		}	}	WSACleanup();	return 0;}