GrabBag/VrNets/UDPServer/_Inc/CYUDPServer.h

86 lines
1.3 KiB
C
Raw Normal View History

2026-07-11 15:49:14 +08:00
#pragma once
#include "IYUDPServer.h"
#include <cstdio>
#ifndef _WIN32
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#define SOCKET int
#define INVALID_SOCKET -1
#else
#include <WS2tcpip.h>
#endif
class CYUDPServer : public IYUDPServer
{
public:
CYUDPServer();
~CYUDPServer() = default;
public:
/**
* <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @brief Init
* @return
*/
virtual int Init(const int nPort) override;
/**
* <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @brief StartUDPServer
* @return
*/
virtual int StartUDPServer(UdpRecvDataFunc pRecvDataFunc, bool bRecvSelfProtocol) override;
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @brief StopUDPServer
* @return
*/
virtual int StopUDPServer() override;
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @brief SendData
* @param pData
* @param nLen
* @return
*/
virtual int SendData(const sockaddr_in clientPeer, const char* pData, const int nLen) override;
private:
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @brief _UdpRecvData
* @param pThis
*/
static void _UdpRecvData(CYUDPServer* pThis);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @brief _UdpRecvTask
*/
void _UdpRecvTask();
/**
* <EFBFBD>ر<EFBFBD>ͨ<EFBFBD><EFBFBD>
* @brief _CloseSocket
*/
void _CloseSocket();
private:
SOCKET m_socketfd;
bool m_bRecv;
bool m_bRecvRuning;
UdpRecvDataFunc m_funcRecvCallback;
};