Files
SimpleRemoter/client/IOCPKCPClient.h

35 lines
997 B
C
Raw Normal View History

#pragma once
#include "IOCPUDPClient.h"
#include "ikcp.h"
#include <thread>
#include <atomic>
class IOCPKCPClient : public IOCPUDPClient
{
public:
IOCPKCPClient(State& bExit, bool exit_while_disconnect = false);
virtual ~IOCPKCPClient();
virtual BOOL ConnectServer(const char* szServerIP, unsigned short uPort) override;
// <20><>д<EFBFBD><D0B4><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP<44><50><EFBFBD>ݸ<EFBFBD>KCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>KCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual int ReceiveData(char* buffer, int bufSize, int flags) override;
virtual bool ProcessRecvData(CBuffer* m_CompressedBuffer, char* szBuffer, int len, int flag) override;
// <20><>д<EFBFBD><D0B4><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>KCP<43><50><EFBFBD><EFBFBD>
virtual int SendTo(const char* buf, int len, int flags) override;
private:
// KCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĻص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP<44><50>sendto
static int kcpOutput(const char* buf, int len, struct IKCPCB* kcp, void* user);
// <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ikcp_update<74><65><EFBFBD>̺߳<DFB3><CCBA><EFBFBD>
void KCPUpdateLoop();
private:
ikcpcb* kcp_;
std::thread updateThread_;
std::atomic<bool> running_;
};