2025-07-20 04:42:29 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "IOCPUDPClient.h"
|
|
|
|
|
|
#include "ikcp.h"
|
|
|
|
|
|
#include <thread>
|
|
|
|
|
|
#include <atomic>
|
|
|
|
|
|
|
|
|
|
|
|
class IOCPKCPClient : public IOCPUDPClient
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
2025-10-15 04:32:59 +08:00
|
|
|
|
IOCPKCPClient(State& bExit, bool exit_while_disconnect = false);
|
|
|
|
|
|
virtual ~IOCPKCPClient();
|
2025-07-20 04:42:29 +08:00
|
|
|
|
|
2025-10-15 04:32:59 +08:00
|
|
|
|
virtual BOOL ConnectServer(const char* szServerIP, unsigned short uPort) override;
|
2025-07-20 04:42:29 +08:00
|
|
|
|
|
2025-10-15 04:32:59 +08:00
|
|
|
|
// <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;
|
2025-07-20 04:42:29 +08:00
|
|
|
|
|
2025-10-15 04:32:59 +08:00
|
|
|
|
virtual bool ProcessRecvData(CBuffer* m_CompressedBuffer, char* szBuffer, int len, int flag) override;
|
2025-07-20 04:42:29 +08:00
|
|
|
|
|
2025-10-15 04:32:59 +08:00
|
|
|
|
// <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;
|
2025-07-20 04:42:29 +08:00
|
|
|
|
|
|
|
|
|
|
private:
|
2025-10-15 04:32:59 +08:00
|
|
|
|
// 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);
|
2025-07-20 04:42:29 +08:00
|
|
|
|
|
2025-10-15 04:32:59 +08:00
|
|
|
|
// <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ikcp_update<74><65><EFBFBD>̺߳<DFB3><CCBA><EFBFBD>
|
|
|
|
|
|
void KCPUpdateLoop();
|
2025-07-20 04:42:29 +08:00
|
|
|
|
|
|
|
|
|
|
private:
|
2025-10-15 04:32:59 +08:00
|
|
|
|
ikcpcb* kcp_;
|
|
|
|
|
|
std::thread updateThread_;
|
|
|
|
|
|
std::atomic<bool> running_;
|
2025-07-20 04:42:29 +08:00
|
|
|
|
};
|