Emx::EuvUdp类 参考

基于EuvLoop的UDP异步接收发送类

#include "EuvUdp.hpp"

Public 类型

using RecvCallback = std::function< void(Emx::ErrCodeE e, const char *data, int32_t size, const struct sockaddr *addr)>
 当接收到数据后会调用此回调函数 更多...
 

Public 成员函数

 EuvUdp ()
 
virtual ~EuvUdp ()
 
ErrCodeE Create (EuvLoop &loop)
 创建UDP并绑定到loop 更多...
 
void Destroy ()
 销毁UDP 更多...
 
ErrCodeE OpenExistSock (uv_os_sock_t sock)
 可以使用一个已经打开的socket上 更多...
 
ErrCodeE Bind (const struct sockaddr *addr, unsigned int flags)
 创建一个socket并绑定到本地的地址 更多...
 
ErrCodeE SetBroadcast (bool ena)
 使能广播 更多...
 
ErrCodeE StartRecv (char *buffer, int32_t size, RecvCallback cbRecv)
 开始接收数据 更多...
 
void StopRecv ()
 停止接收数据 更多...
 
int32_t Send (uint8_t *data, int32_t size, const struct sockaddr *addr, socklen_t addrLen)
 以阻塞的方式发送数据 更多...
 
ErrCodeE GetPeerName (struct sockaddr *name, int *len)
 获取对端A地址 更多...
 
ErrCodeE GetSockName (struct sockaddr *name, int *len)
 获取本地地址 更多...
 
size_t GetSendQueueSize ()
 获取发送等待队列中的数据大小 更多...
 
size_t GetSendQueueCount ()
 获取发送等待队列的个数 更多...
 
uv_udp_t * GetUDP ()
 获取libuv的udp句柄 更多...
 
int32_t GetFD ()
 获取文件描述符fd 更多...
 
bool IsReceiving ()
 获取当前描述符是否监听接收 更多...
 

成员类型定义说明

◆ RecvCallback

using Emx::EuvUdp::RecvCallback = std::function<void(Emx::ErrCodeE e, const char *data, int32_t size, const struct sockaddr *addr)>
参数
e[in] 接收错误信息
data[in] 接收到的数据指针
size[in] 接收到的数据大小
addr[in] 对方的地址

构造及析构函数说明

◆ EuvUdp()

Emx::EuvUdp::EuvUdp ( )
inline

◆ ~EuvUdp()

virtual Emx::EuvUdp::~EuvUdp ( )
inlinevirtual

成员函数说明

◆ Create()

ErrCodeE Emx::EuvUdp::Create ( EuvLoop loop)
参数
loop[in] 需要绑定的loop
返回
ErrCodeE

◆ Destroy()

void Emx::EuvUdp::Destroy ( )

被这些函数引用 ~EuvUdp().

◆ OpenExistSock()

ErrCodeE Emx::EuvUdp::OpenExistSock ( uv_os_sock_t  sock)
参数
sock需要使用的socket
返回
ErrCodeE

◆ Bind()

ErrCodeE Emx::EuvUdp::Bind ( const struct sockaddr *  addr,
unsigned int  flags 
)
参数
addr[in] 地址
flags[in] 同bind函数
返回
ErrCodeE

◆ SetBroadcast()

ErrCodeE Emx::EuvUdp::SetBroadcast ( bool  ena)
参数
ena[in] 是否使能
返回
ErrCodeE

◆ StartRecv()

ErrCodeE Emx::EuvUdp::StartRecv ( char *  buffer,
int32_t  size,
RecvCallback  cbRecv 
)
参数
buffer[in] 接收数据所使用的buffer指针
size[in] 接受数据所使用的buffer大小
cbRecv[in] 当数据到来时的回调函数
返回
ErrCodeE

◆ StopRecv()

void Emx::EuvUdp::StopRecv ( )
inline

◆ Send()

int32_t Emx::EuvUdp::Send ( uint8_t *  data,
int32_t  size,
const struct sockaddr *  addr,
socklen_t  addrLen 
)
inline
参数
data[in] 发送的数据指针
size[in] 发送的数据大小
addr[in] 发送的目的地址
addrLen[in] 发送的目的地址结构体长度
返回
同sendto函数

◆ GetPeerName()

ErrCodeE Emx::EuvUdp::GetPeerName ( struct sockaddr *  name,
int *  len 
)
参数
name[out] 存储地址的buffer
len[in,out] 存储地址的buffer最大大小,返回实际地址长度
返回
ErrCodeE

◆ GetSockName()

ErrCodeE Emx::EuvUdp::GetSockName ( struct sockaddr *  name,
int *  len 
)
参数
name[out] 存储地址的buffer
len[in,out] 存储地址的buffer最大大小,返回实际地址长度
返回
ErrCodeE

◆ GetSendQueueSize()

size_t Emx::EuvUdp::GetSendQueueSize ( )
inline
返回
数据大小

◆ GetSendQueueCount()

size_t Emx::EuvUdp::GetSendQueueCount ( )
inline
返回
发送队列等待的个数

◆ GetUDP()

uv_udp_t* Emx::EuvUdp::GetUDP ( )
inline
返回
udp句柄

◆ GetFD()

int32_t Emx::EuvUdp::GetFD ( )
inline
返回
fd

◆ IsReceiving()

bool Emx::EuvUdp::IsReceiving ( )
inline
返回
bool