FAQ/Hook/TcpServer.h

63 lines
1.1 KiB
C++

#pragma once
#ifndef _WINSOCKAPI_
#define _WINSOCKAPI_
#include <WinSock2.h>
#endif
#include "Utils.h"
class TcpServer
{
public:
SOCKET serverSocket;
SOCKET clientSocket;
WSADATA wsaData;
std::string addr;
std::string port;
TcpServer(const char* addr, const char* port): addr(addr), port(port)
{
}
bool listen();
bool waitClient();
void close();
int send(const char* buf, size_t len);
bool sendAll(const char* buf, size_t len);
int recv(char* buffer, size_t len);
bool recvUntil(char* buffer, size_t len);
template<typename T>
bool send(const T& value);
template<typename T>
bool recv(T& value);
};
template <typename T>
bool TcpServer::send(const T& value)
{
return sendAll((const char*)&value, sizeof(T));
}
template <typename T>
bool TcpServer::recv(T& value)
{
return recvUntil((char*)&value, sizeof(T));
}
template<>
bool TcpServer::send<std::string>(const std::string& value);
template<>
bool TcpServer::recv<std::string>(std::string& value);