CNetworkManager Class

Posts 15 of 5 · Page 1 of 1
CNetworkManager Class
Programmed by me(jetamay) for MPGH.NET.

Under MIT license, enjoy. Only that you must notify users about MPGH.Net when using it.

This class eases communication with a server, and prevents any problems in a blocking socket, using a callback instead. Uses a TCP stream connection. Include ws2_32.lib and wsock32.lib in your projects provided in the windows platform sdk.

Header :
[highlight=cpp]
#pragma once
#include <winsock.h>
#include "engineDef.h"
#include "CNetworkManager.h"
typedef void (*MESSAGECALLBACK)(char* message);

class CNetworkManager {
private:
HANDLE hRecvThread;
WSADATA winsockData;
SOCKADDR_IN socketAddress;
public:
SOCKET hSocket;
MESSAGECALLBACK msgCallback;
CNetworkManager(MESSAGECALLBACK callback);
int ConnectToServer(char* address, int port);
int SendMessage(char* message);
void StopRecvThread();
void StartRecvThread();
~CNetworkManager();
};

static void RecvLoop(CNetworkManager* callerClass);
[/highlight]
Source :
[highlight=cpp]

#include "stdafx.h"
#include <winsock.h>
#include "engineDef.h"
#include "CNetworkManager.h"

#define SOCKET_VERSION 2
CNetworkManager::CNetworkManager(MESSAGECALLBACK callback) {
msgCallback = callback;

hRecvThread = CreateThread(0,0,(LPTHREAD_START_ROUTINE)RecvLoop, this,CREATE_SUSPENDED,0);
WSAStartup(MAKEWORD(SOCKET_VERSION,0), &winsockData);
hSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
}
CNetworkManager::~CNetworkManager() {
SuspendThread(hRecvThread);
CloseHandle(hRecvThread);
closesocket(hSocket);
WSACleanup();
}
int CNetworkManager::ConnectToServer(char* address, int port) {
socketAddress.sin_family = AF_INET;
socketAddress.sin_addr.S_un.S_addr = inet_addr(address);
socketAddress.sin_port = htons(port);
if(connect(hSocket, (sockaddr*) &socketAddress, sizeof(socketAddress)) != 0)
return -1;
else
return 1;
}
int CNetworkManager::SendMessage(char* message) {
send(hSocket, message, sizeof(message),0);
return 1;
}
void CNetworkManager::StartRecvThread() {
ResumeThread(hRecvThread);
}

void CNetworkManager::StopRecvThread() {
SuspendThread(hRecvThread);
}

static void RecvLoop(CNetworkManager* callingClass) {
char* buffer = new char[300];
while(true) {
ZeroMemory(buffer, 300);
int recvBytes = recv(callingClass->hSocket, buffer, 300, 0);
callingClass->msgCallback(buffer);
}
delete buffer;
}

[/highlight]
exactly what is this used for?

i dont know much about coding
good work jetamay
I saw this on google. nice rip
Quote Originally Posted by Obama View Post
I saw this on google. nice rip
Link pl0x. If people are using my shit it makes me feel good, even if they're breaking the license.
Posts 15 of 5 · Page 1 of 1
This thread is closed for replies.

Similar Threads

Tags for this Thread

Need help?