Files
WickedEngine/WickedEngine/wiNetwork.h
T
Turanszki Janos 2d5d424b4a refactoring
2017-10-01 13:12:30 +01:00

96 lines
1.7 KiB
C++

#ifndef NETWORK_H
#define NETWORK_H
#include "wiBackLog.h"
#include <Windows.h>
#include <winsock.h>
#include <string>
#include <sstream>
#ifndef WINSTORE_SUPPORT
#pragma comment(lib,"ws2_32.lib")
#endif
class wiNetwork
{
public:
static const int PORT = 65000;
static const int PACKET_TYPE_CHANGENAME = 0;
static const int PACKET_TYPE_TEXTMESSAGE = 1;
static const int PACKET_TYPE_OTHER = 2;
#ifndef WINSTORE_SUPPORT
protected:
#define SCK_VERSION2 0x0202
SOCKET s;
WSADATA w;
fd_set readfds;
std::string name;
public:
bool success;
wiNetwork(void);
~wiNetwork(void);
virtual bool changeName(const std::string& newName){
name=newName;
return true;
}
void CloseConnection()
{
if(s)
closesocket(s);
WSACleanup();
//wiBackLog::post("\n\nClosed Connection");
}
static bool sendText(const std::string& text, SOCKET socket);
template <typename T>
static bool sendData(const T& value, SOCKET socket){
int sent = send(socket, (const char*)&value, sizeof(value), 0);
if(sent==SOCKET_ERROR) {
//stringstream ss("");
//ss << "\n[Error] Sending data failed with error: " << WSAGetLastError();
//wiBackLog::post(ss.str().c_str());
return false;
}
return true;
}
static bool receiveText(std::string& text, SOCKET socket);
template <typename T>
static bool receiveData(T& value, SOCKET socket){
char puffer[sizeof(value)];
int received = recv(socket, puffer, sizeof(puffer), 0);
if(received<=0){
//cout<< "[Error][receiveNumber] The recv call failed with error!\n";
}
else if (received <= sizeof(value)) {
value = *((T*)puffer);
return true;
}
else{
//cout<< "[Error][receiveNumber] Too long request!\n";
}
return false;
}
#endif // WINSTORE_SUPPORT
};
#endif