All pastes #909911 Raw Edit

Untitled

public text v1 · immutable
·published 2008-02-19 16:47 UTC
rendered paste body
#include <windows.h>
#include <stdio.h>
#include <winsock.h>
#include <iostream>
using namespace std;
int filterSocket(char fBytes[]);
WORD sockVersion;
WSADATA wsaData;
SOCKET listeningSocket;
SOCKADDR_IN serverInfo;
int nret, lret, i;
int nReadBytes;
const int kBufferSize = 1024;
char acReadBuffer[kBufferSize];
char buf[33];


char bConnect1[] = {0x33, 0x00, 0x00,
0x00, 0x46, 0x72,
0x7A, 0x40, 0x52,
0x30, 0x78, 0x35,
0x08 };

char bConnect2[] = {0x0d, 0x00};

SOCKET AcceptConnection(SOCKET ListeningSocket, sockaddr_in& sinRemote)
{
    int nAddrSize = sizeof(sinRemote);
    return accept(ListeningSocket, (sockaddr*)&sinRemote, &nAddrSize);
}


int startWinsock(){

sockVersion = MAKEWORD(1 , 1);
if(WSAStartup(sockVersion, &wsaData) != 0)
{
	printf("WSAStartup Failed\n");
	nret = WSAGetLastError();
	itoa(nret, buf, 10);
	printf(buf);
	printf("\n");
	WSACleanup();
	return 1;
}


else{
listeningSocket = socket(AF_INET,
						 SOCK_STREAM,
						 IPPROTO_TCP);


if(listeningSocket == INVALID_SOCKET)
{
	nret = WSAGetLastError();
	printf("Sockets are bad");
	itoa(nret, buf, 10);
	printf(buf);
	WSACleanup();
	return 2;
}

	serverInfo.sin_family = AF_INET;
	serverInfo.sin_addr.s_addr = INADDR_ANY;
	serverInfo.sin_port = htons(8484);


	nret = bind(listeningSocket, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr));

	if (nret == SOCKET_ERROR) {
		nret = WSAGetLastError();
		printf("bind");
		WSACleanup();
		return 3;
	}

	nret = listen(listeningSocket, 10);		// Up to 10 connections may wait at any
	if (nret == SOCKET_ERROR) {
		nret = WSAGetLastError();
		printf("listen");
		WSACleanup();
		return 4;
	}
	
	while(1)
	{

printf("listening\n");
sockaddr_in sinRemote;

SOCKET sd = AcceptConnection(listeningSocket, sinRemote);
if (sd != INVALID_SOCKET) 
		{
							
				std::cout << "Accepted connection from " <<
					  inet_ntoa(sinRemote.sin_addr) << ":" <<
					  ntohs(sinRemote.sin_port) << ".\n";		

				send(sd, bConnect2, sizeof(bConnect2), 0);
						cout << "Sent" << sizeof(bConnect2) << " bytes to client." << endl;
				send(sd, bConnect1, sizeof(bConnect1), 0);
						cout << "Sent" << sizeof(bConnect1) << " bytes to client." << endl;						

				nReadBytes = recv(sd,acReadBuffer, kBufferSize, 0);
				

		}
		else{
			printf("Bad Socket");
		}	
	}	
}

return 0;
printf("Success\n");
}

int main()
{
	printf("Start\n");
			if(startWinsock() != 0)
				printf("Error\n");
			else
				printf("success\n");
				WSACleanup();
			closesocket(listeningSocket);
		printf("Exit\n");
	Sleep(1000);
	return 0;
}