STTNet 0.7.0
Loading...
Searching...
No Matches
stt::network::UdpFDHandler Class Reference

UDP操作的类 传入套接字进行UDP协议的操作 More...

#include <sttnet.h>

Inheritance diagram for stt::network::UdpFDHandler:
stt::network::UdpClient stt::network::UdpServer

Public Member Functions

void setFD (const int &fd, const bool &flag1=false, const int &sec=-1, const bool &flag2=false)
 设置fd
 
void blockSet (const int &sec=-1)
 设置为阻塞模式
 
void unblockSet ()
 设置为非阻塞模式
 
bool multiUseSet ()
 设置SO_REUSEADDR模式
 
int getFD ()
 返回fd
 
void close (const bool &cle=true)
 置空对象,关闭套接字
 
int sendData (const std::string &data, const std::string &ip, const int &port, const bool &block=true)
 向目标发送字符串数据。
 
int sendData (const char *data, const uint64_t &length, const std::string &ip, const int &port, const bool &block=true)
 向目标发送指定长度的二进制数据。
 
int recvData (std::string &data, const uint64_t &length, std::string &ip, int &port)
 接收一次数据到string字符串容器
 
int recvData (char *data, const uint64_t &length, std::string &ip, int &port)
 接收一次数据到char*容器
 

Protected Attributes

int fd =-1
 
bool flag1 =false
 
bool flag2 =false
 
int sec =-1
 

Detailed Description

UDP操作的类 传入套接字进行UDP协议的操作

Member Function Documentation

◆ blockSet()

void stt::network::UdpFDHandler::blockSet ( const int & sec = -1)

设置为阻塞模式

Parameters
sec阻塞超时时间 阻塞超过这个时间就不会再阻塞了 默认为-1 即无限等待

◆ close()

void stt::network::UdpFDHandler::close ( const bool & cle = true)

置空对象,关闭套接字

Parameters
cletrue:置空对象并且关闭套接字 false:仅仅清空对象,不关闭套接字

◆ getFD()

int stt::network::UdpFDHandler::getFD ( )
inline

返回fd

◆ multiUseSet()

bool stt::network::UdpFDHandler::multiUseSet ( )

设置SO_REUSEADDR模式

Returns
true:设置成功 false:设置失败

◆ recvData() [1/2]

int stt::network::UdpFDHandler::recvData ( char * data,
const uint64_t & length,
std::string & ip,
int & port )

接收一次数据到char*容器

Parameters
data接收数据的数据容器(char*类型)
length最大接收长度
ip记录发送来源的ip
port记录发送来源的断开
Returns
  • 返回值 > 0:成功接收的字节数;
  • 返回值 = 0:连接已关闭;
  • 返回值 < 0:接收失败;
    • -99:对象未绑定 socket;
    • -100:非阻塞模式且没有数据
Note
接收是否会阻塞根据fd的阻塞情况决定

◆ recvData() [2/2]

int stt::network::UdpFDHandler::recvData ( std::string & data,
const uint64_t & length,
std::string & ip,
int & port )

接收一次数据到string字符串容器

Parameters
data接收数据的数据容器(string类型)
length最大接收长度
ip记录发送来源的ip
port记录发送来源的断开
Returns
  • 返回值 > 0:成功接收的字节数;
  • 返回值 = 0:连接已关闭;
  • 返回值 < 0:接收失败;
    • -99:对象未绑定 socket;
    • -100:非阻塞模式且没有数据
Note
接收是否会阻塞根据fd的阻塞情况决定

◆ sendData() [1/2]

int stt::network::UdpFDHandler::sendData ( const char * data,
const uint64_t & length,
const std::string & ip,
const int & port,
const bool & block = true )

向目标发送指定长度的二进制数据。

Parameters
data指向要发送的数据缓冲区。
length数据长度(字节)。
ip目标 IPv4/域名。
port目标 UDP 端口。
block是否以阻塞模式发送(默认 true)。
  • true:会阻塞直到全部数据发送成功除非出错了(无论 socket 是阻塞或非阻塞);
  • false:阻塞与否取决于套接字状态。
Returns
  • 返回值 > 0:成功发送的字节数;
  • 返回值 <= 0:发送失败;
    • -98:目标错误
    • -99:对象未绑定 socket;
    • -100:非阻塞模式下,发送缓冲区已满。
Note
若 block 为 true,会持续阻塞直到全部数据发送完毕除非出错了(无论 socket 是阻塞或非阻塞)。 若 block 为 false,阻塞与否取决于套接字状态。返回值可能小于 length,需手动处理剩余数据。

◆ sendData() [2/2]

int stt::network::UdpFDHandler::sendData ( const std::string & data,
const std::string & ip,
const int & port,
const bool & block = true )

向目标发送字符串数据。

Parameters
data要发送的数据内容(std::string 类型)。
ip目标 IPv4/域名。
port目标 UDP 端口。
block是否以阻塞模式发送(默认 true)。
  • true:会阻塞直到全部数据发送成功除非出错了(无论 socket 是阻塞或非阻塞);
  • false:阻塞与否取决于套接字状态。
Returns
  • 返回值 > 0:成功发送的字节数;
  • 返回值 <= 0:发送失败;
    • -98:目标错误
    • -99:对象未绑定 socket;
    • -100:非阻塞模式下,发送缓冲区已满。
Note
若 block 为 true,会持续阻塞直到全部数据发送完毕除非出错了(无论 socket 是阻塞或非阻塞),适合希望确保完整发送的场景。 若 block 为 false,阻塞与否取决于套接字状态。返回值可能小于 length,需手动处理剩余数据。

◆ setFD()

void stt::network::UdpFDHandler::setFD ( const int & fd,
const bool & flag1 = false,
const int & sec = -1,
const bool & flag2 = false )

设置fd

Parameters
fd需要传入的套接字fd
flag1true:设置非阻塞模式 false:设置阻塞模式 (默认为阻塞模式)
sec设置阻塞超时时间(秒) (默认为-1 即为无限等待)
flag2true:设置SO_REUSEADDR模式 false:不设置SO_REUSEADDR模式

◆ unblockSet()

void stt::network::UdpFDHandler::unblockSet ( )

设置为非阻塞模式

Member Data Documentation

◆ fd

int stt::network::UdpFDHandler::fd =-1
protected

◆ flag1

bool stt::network::UdpFDHandler::flag1 =false
protected

◆ flag2

bool stt::network::UdpFDHandler::flag2 =false
protected

◆ sec

int stt::network::UdpFDHandler::sec =-1
protected

The documentation for this class was generated from the following file: