2024-11-23 13:47:53 +08:00
|
|
|
|
#pragma once
|
2024-11-24 16:30:28 +08:00
|
|
|
|
#include<iostream>
|
|
|
|
|
#include <winsock2.h>
|
|
|
|
|
#include <ws2tcpip.h>
|
|
|
|
|
#include <thread>
|
|
|
|
|
#include <mutex>
|
|
|
|
|
#include <functional>
|
2024-11-23 13:47:53 +08:00
|
|
|
|
#include "md5.h"
|
|
|
|
|
#include "AES.h"
|
|
|
|
|
|
2024-11-24 16:30:28 +08:00
|
|
|
|
#pragma comment(lib,"ws2_32.lib")
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
2024-11-23 13:47:53 +08:00
|
|
|
|
class SocketC
|
|
|
|
|
{
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
struct MsgHead
|
|
|
|
|
{
|
|
|
|
|
int isStr = 0;
|
|
|
|
|
int bufLen = 0;
|
|
|
|
|
time_t tm = 0;
|
|
|
|
|
char token[34] = { 0 };
|
|
|
|
|
};
|
|
|
|
|
|
2024-11-24 16:30:28 +08:00
|
|
|
|
char tmpBuf[10240] = { 0 }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int bufLen = 0; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>˶<CBB6><E0B3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
SOCKET sclient = 0; //socket<65>ͻ<EFBFBD><CDBB><EFBFBD>
|
|
|
|
|
BOOL state = 0; //<2F><>ǰ״̬
|
|
|
|
|
int m_mode; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
std::thread rec; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD>߳<EFBFBD>
|
|
|
|
|
function<VOID(char*, int)> Rfunc = NULL; //<2F><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĻص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
function<VOID()> Cfunc = NULL; //<2F>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ӵĻص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
bool initSocket(); //<2F><>ʼ<EFBFBD><CABC>socket
|
|
|
|
|
VOID Receive(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD>
|
|
|
|
|
char* RecvBuff(char* buf, int& len, int& isStr); //<2F><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
BOOL CheckHead(MsgHead* h); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣͷ
|
2024-11-23 13:47:53 +08:00
|
|
|
|
|
|
|
|
|
public:
|
2024-11-24 16:30:28 +08:00
|
|
|
|
SocketC(int mode = 0); //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
~SocketC(); //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
bool Connect(string IP, UINT Prot); //<2F><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int SendData(const char* Date, int len, int isStr = 0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
|
|
|
|
BOOL SendStr(string str); //<2F><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|
|
|
|
VOID SetRecvFunc(function<VOID(char*, int)> fun); //<2F><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĻص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
VOID SetCloseFunc(function<VOID()> fun); //<2F><><EFBFBD>öϿ<C3B6><CFBF><EFBFBD><EFBFBD>ӵĻص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void Close(); //<2F>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
|
2024-11-23 13:47:53 +08:00
|
|
|
|
};
|