fastdo  0.6.16
eiennet::AsyncSocket类 参考

异步套接字 更多...

#include <eiennet_async.hpp>

类 eiennet::AsyncSocket 继承关系图:
eiennet::AsyncSocket 的协作图:

Public 类型

using ErrorHandlerFunction = std::function< void(winux::SharedPointer< AsyncSocket > sock) >
 错误处理 更多...
 
- Public 类型 继承自 eiennet::Socket
enum  AddrFamily {
  afUnspec = 0, afLocal = 1, afUnix = afLocal, afFile = afLocal,
  afInet = 2, afAx25 = 3, afIpx = 4, afAppletalk = 5,
  afNetrom = 6, afBridge = 7, afAtmpvc = 8, afX25 = 9,
  afInet6 = 10, afRose = 11, afDecnet = 12, afNetbeui = 13,
  afSecurity = 14, afKey = 15, afNetlink = 16, afRoute = afNetlink,
  afPacket = 17, afAsh = 18, afEconet = 19, afAtmsvc = 20,
  afRds = 21, afSna = 22, afIrda = 23, afPppox = 24,
  afWanpipe = 25, afLlc = 26, afUnknown27 = 27, afUnknown28 = 28,
  afCan = 29, afTipc = 30, afBluetooth = 31, afIucv = 32,
  afRxrpc = 33, afIsdn = 34, afPhonet = 35, afIeee802154 = 36,
  afMax = 37
}
 地址族 更多...
 
enum  SockType {
  sockUnknown, sockStream, sockDatagram, sockRaw,
  sockRdm, sockSeqPacket, sockDccp, sockPacket,
  sockCloexec, sockNonblock
}
 套接字类型 更多...
 
enum  Protocol {
  protoUnspec = 0, protoIp = 0, protoIcmp, protoIgmp,
  protoIpip, protoIpv4 = protoIpip, protoTcp, protoEgp,
  protoPup, protoUdp, protoIdp, protoTp,
  protoDccp, protoIpv6, protoRsvp, protoGre,
  protoEsp, protoAh, protoMtp, protoBeetph,
  protoEncap, protoPim, protoComp, protoSctp,
  protoUdplite, protoRaw, protoMax
}
 协议 更多...
 
typedef std::function< void(size_t hadBytes, void *param) > FunctionSuccessCallback
 
- Public 类型 继承自 winux::EnableSharedFromThis< AsyncSocket >
using _EsftType = EnableSharedFromThis
 

Public 成员函数

winux::SharedPointer< AsyncSocketaccept (EndPoint *ep=nullptr)
 
void setDataPtr (void *data)
 设置套接字关联数据 更多...
 
void * getDataPtr () const
 获取套接字关联数据 更多...
 
template<typename _Ty >
_Ty * getDataPtr () const
 获取套接字关联数据 更多...
 
IoServicegetService () const
 获取IO服务对象 更多...
 
void acceptAsync (IoAcceptCtx::OkFunction cbOk, winux::uint64 timeoutMs=-1, IoAcceptCtx::TimeoutFunction cbTimeout=nullptr)
 接受客户连接(异步) 更多...
 
void connectAsync (EndPoint const &ep, IoConnectCtx::OkFunction cbOk, winux::uint64 timeoutMs=-1, IoConnectCtx::TimeoutFunction cbTimeout=nullptr)
 连接服务器(异步) 更多...
 
void recvUntilSizeAsync (size_t targetSize, IoRecvCtx::OkFunction cbOk, winux::uint64 timeoutMs=-1, IoRecvCtx::TimeoutFunction cbTimeout=nullptr)
 接收直到指定大小的数据(异步) 更多...
 
void recvAsync (IoRecvCtx::OkFunction cbOk, winux::uint64 timeoutMs=-1, IoRecvCtx::TimeoutFunction cbTimeout=nullptr)
 接收数据(异步) 更多...
 
void sendAsync (void const *data, size_t size, IoSendCtx::OkFunction cbOk, winux::uint64 timeoutMs=-1, IoSendCtx::TimeoutFunction cbTimeout=nullptr)
 发送数据(异步) 更多...
 
void sendAsync (winux::Buffer const &data, IoSendCtx::OkFunction cbOk, winux::uint64 timeoutMs=-1, IoSendCtx::TimeoutFunction cbTimeout=nullptr)
 发送数据(异步) 更多...
 
void recvFromUntilSizeAsync (size_t targetSize, IoRecvFromCtx::OkFunction cbOk, winux::uint64 timeoutMs=-1, IoRecvFromCtx::TimeoutFunction cbTimeout=nullptr)
 无连接,接收直到指定大小的数据(异步) 更多...
 
void recvFromAsync (IoRecvFromCtx::OkFunction cbOk, winux::uint64 timeoutMs=-1, IoRecvFromCtx::TimeoutFunction cbTimeout=nullptr)
 无连接,接收数据(异步) 更多...
 
void sendToAsync (EndPoint const &ep, void const *data, size_t size, IoSendToCtx::OkFunction cbOk, winux::uint64 timeoutMs=-1, IoSendToCtx::TimeoutFunction cbTimeout=nullptr)
 无连接,发送数据(异步) 更多...
 
void sendToAsync (EndPoint const &ep, winux::Buffer const &data, IoSendToCtx::OkFunction cbOk, winux::uint64 timeoutMs=-1, IoSendToCtx::TimeoutFunction cbTimeout=nullptr)
 无连接,发送数据(异步) 更多...
 
void onErrorHandler (ErrorHandlerFunction handler)
 
- Public 成员函数 继承自 eiennet::Socket
 Socket (int sock=-1, bool isNewSock=false)
 构造函数1,包装现有socket描述符 更多...
 
 Socket (AddrFamily af, SockType sockType, Protocol proto)
 构造函数2,指定socket的'地址簇','类型','协议' 更多...
 
virtual ~Socket ()
 移动构造函数 更多...
 
AddrFamily getAddrFamily () const
 获取Socket的create()参数:'地址簇' 更多...
 
void setAddrFamily (AddrFamily af)
 指定Socket的create()参数:'地址簇' 更多...
 
SockType getSockType () const
 获取Socket的create()参数:'类型' 更多...
 
void setSockType (SockType sockType)
 指定Socket的create()参数:'类型' 更多...
 
Protocol getProtocol () const
 获取Socket的create()参数:'协议' 更多...
 
void setProtocol (Protocol proto)
 指定Socket的create()参数:'协议' 更多...
 
void getParams (AddrFamily *af, SockType *sockType, Protocol *proto)
 获取Socket的create()参数:'地址簇','类型','协议' 更多...
 
void setParams (AddrFamily af, SockType sockType, Protocol proto)
 指定Socket的create()参数:'地址簇','类型','协议' 更多...
 
bool create (AddrFamily af, SockType sockType, Protocol proto)
 根据'地址簇','类型','协议'创建一个socket 更多...
 
bool create ()
 根据内部存储的'地址簇','类型','协议'创建一个socket 更多...
 
int close ()
 关闭socket描述符 更多...
 
int shutdown (int how=SdSend)
 关掉socket的相应操作,但并不会close套接字。 更多...
 
int send (void const *data, size_t size, int msgFlags=MsgDefault)
 发送数据。返回已发送大小,出错返回-1。 更多...
 
int send (winux::AnsiString const &data, int msgFlags=MsgDefault)
 发送数据。返回已发送大小,出错返回-1。 更多...
 
int send (winux::Buffer const &data, int msgFlags=MsgDefault)
 发送数据。返回已发送大小,出错返回-1。 更多...
 
bool sendUntil (size_t targetSize, void const *data, int msgFlags=MsgDefault)
 发送数据,直到发送完指定大小的数据。 更多...
 
bool sendUntil (winux::AnsiString const &data, int msgFlags=MsgDefault)
 发送字符串,直到发送完该长度的字符串。 更多...
 
bool sendUntil (winux::Buffer const &data, int msgFlags=MsgDefault)
 发送缓冲区,直到发送完该大小的缓冲区。 更多...
 
int sendWaitUntil (size_t targetSize, void const *data, size_t *hadSent, double sec, int *rcWait, FunctionSuccessCallback eachSuccessCallback=FunctionSuccessCallback(), void *param=nullptr, int msgFlags=MsgDefault)
 发送数据,直到发送完指定大小的数据或超时。 更多...
 
int sendWaitUntil (winux::AnsiString const &data, size_t *hadSent, double sec, int *rcWait, FunctionSuccessCallback eachSuccessCallback=FunctionSuccessCallback(), void *param=nullptr, int msgFlags=MsgDefault)
 
int sendWaitUntil (winux::Buffer const &data, size_t *hadSent, double sec, int *rcWait, FunctionSuccessCallback eachSuccessCallback=FunctionSuccessCallback(), void *param=nullptr, int msgFlags=MsgDefault)
 
template<typename _PodType >
bool sendUntilType (_PodType const &v, size_t size=sizeof(_PodType), int msgFlags=MsgDefault)
 发送一个Plain of Data类型的变量,若成功返回true,否则返回false。 更多...
 
int recv (void *buf, size_t size, int msgFlags=MsgDefault)
 尝试接收size大小数据。返回实际接收的数据大小,出错返回-1。 更多...
 
winux::Buffer recv (size_t size, int msgFlags=MsgDefault)
 尝试接收size大小数据,返回实际收到的数据Buffer。 更多...
 
bool recvUntilTarget (winux::AnsiString const &target, winux::GrowBuffer *data, winux::GrowBuffer *extraData, int msgFlags=MsgDefault)
 接收数据,直到碰到target指定的数据。data返回接收到的数据,data里可以已有部分数据,extraData返回额外接收的数据。 更多...
 
int recvWaitUntilTarget (winux::AnsiString const &target, winux::GrowBuffer *data, winux::GrowBuffer *extraData, size_t *hadRead, size_t *startpos, size_t *pos, double sec, int *rcWait, FunctionSuccessCallback eachSuccessCallback=FunctionSuccessCallback(), void *param=nullptr, int msgFlags=MsgDefault)
 接收数据,直到碰到target指定的数据或者超时。 更多...
 
bool recvUntilSize (size_t targetSize, winux::GrowBuffer *data, int msgFlags=MsgDefault)
 接收数据,直到收到指定大小的数据。data返回接收到的数据。 更多...
 
int recvWaitUntilSize (size_t targetSize, winux::GrowBuffer *data, size_t *hadRead, double sec, int *rcWait, FunctionSuccessCallback eachSuccessCallback=FunctionSuccessCallback(), void *param=nullptr, int msgFlags=MsgDefault)
 接收数据,直到收到指定大小的数据或者超时。 更多...
 
template<typename _PodType >
bool recvUntilType (_PodType *v, size_t size=sizeof(_PodType), int msgFlags=MsgDefault)
 接收一个Plain of Data类型的变量,若成功返回true,否则返回false。 更多...
 
winux::Buffer recvAvail (int msgFlags=MsgDefault)
 接收不用阻塞即可接收的数据,返回收到的数据Buffer。 更多...
 
winux::Buffer recvWaitAvail (double sec, int *rcWait, int msgFlags=MsgDefault)
 接收已到达的数据,如果没有到达数据则等待有数据到达或超过指定时间,返回收到的数据Buffer。 更多...
 
int sendTo (EndPoint const &ep, void const *data, size_t size, int msgFlags=MsgDefault)
 无连接模式发送数据到指定端点。返回已发送大小,出错返回-1。 更多...
 
int sendTo (EndPoint const &ep, winux::AnsiString const &data, int msgFlags=MsgDefault)
 无连接模式发送数据到指定端点。返回已发送大小,出错返回-1。 更多...
 
int sendTo (EndPoint const &ep, winux::Buffer const &data, int msgFlags=MsgDefault)
 无连接模式发送数据到指定端点。返回已发送大小,出错返回-1。 更多...
 
int recvFrom (EndPoint *ep, void *buf, size_t size, int msgFlags=MsgDefault)
 无连接模式接收数据。返回已接收的大小,出错返回-1。 更多...
 
winux::Buffer recvFrom (EndPoint *ep, size_t size, int msgFlags=MsgDefault)
 无连接模式接收数据。返回实际收到的数据Buffer。 更多...
 
bool connect (EndPoint const &ep)
 连接服务器 更多...
 
bool bind (EndPoint const &ep)
 绑定地址。若套接字尚未创建则创建套接字 更多...
 
bool listen (int backlog)
 监听 更多...
 
bool accept (int *sock, EndPoint *ep=NULL)
 接受一个客户连接 更多...
 
winux::SharedPointer< Socketaccept (EndPoint *ep=NULL)
 接受一个客户连接 更多...
 
int getRecvBufSize () const
 获取接收缓冲区大小 更多...
 
bool setRecvBufSize (int optval)
 设置接收缓冲区大小 更多...
 
int getSendBufSize () const
 获取发送缓冲区大小 更多...
 
bool setSendBufSize (int optval)
 设置发送缓冲区大小 更多...
 
winux::uint32 getRecvTimeout () const
 获取接收超时(ms) 更多...
 
bool setRecvTimeout (winux::uint32 optval)
 设置接收超时(ms) 更多...
 
winux::uint32 getSendTimeout () const
 获取发送超时(ms) 更多...
 
bool setSendTimeout (winux::uint32 optval)
 设置发送超时(ms) 更多...
 
bool getReUseAddr () const
 获取是否开启了重用地址 更多...
 
bool setReUseAddr (bool optval)
 设置socket是否重用地址,默认false不重用 更多...
 
bool getBroadcast () const
 获取是否启用广播 更多...
 
bool setBroadcast (bool optval)
 设置socket是否广播,默认false非广播 更多...
 
bool getIpv6Only () const
 获取IPV6套接字是否只启用IPV6功能,Windows默认true,Linux默认false 更多...
 
bool setIpv6Only (bool optval)
 设置IPV6套接字是否只启用IPV6功能,Windows默认true,Linux默认false 更多...
 
int getError () const
 通过getsockopt()+SO_ERROR获取仅属于socket的错误 更多...
 
SockType getType () const
 获取socket类型 更多...
 
bool isListening () const
 socket是否为监听模式 更多...
 
int getAvailable () const
 获取可不阻塞接收的数据量 更多...
 
bool setBlocking (bool blocking)
 设置socket阻塞模式,true为阻塞,false为非阻塞。 更多...
 
int get () const
 Windows:socket句柄,或Linux:socket描述符 更多...
 
 operator bool () const
 判断Socket是否有效 更多...
 
- Public 成员函数 继承自 winux::EnableSharedFromThis< AsyncSocket >
SharedPointer< AsyncSocket > sharedFromThis ()
 
SharedPointer< const AsyncSocket > sharedFromThis () const
 
WeakPointer< AsyncSocket > weakFromThis () noexcept
 
WeakPointer< const AsyncSocket > weakFromThis () const noexcept
 

静态 Public 成员函数

static winux::SharedPointer< AsyncSocketNew (IoService &ioServ, int sock=-1, bool isNewSock=false)
 
static winux::SharedPointer< AsyncSocketNew (IoService &ioServ, AddrFamily af, SockType sockType, Protocol proto)
 
- 静态 Public 成员函数 继承自 eiennet::Socket
static int ErrNo ()
 从errno获取错误码 更多...
 

Protected 成员函数

 AsyncSocket (IoService &ioServ, int sock=-1, bool isNewSock=false)
 构造函数1 更多...
 
 AsyncSocket (IoService &ioServ, AddrFamily af, SockType sockType, Protocol proto)
 构造函数2 更多...
 
virtual void onError (winux::SharedPointer< AsyncSocket > sock)
 
- Protected 成员函数 继承自 eiennet::Socket
bool _tryCreate (AddrFamily af, bool hasAf, SockType sockType, bool hasSockType, Protocol proto, bool hasProto)
 如果未创建Socket则尝试创建。如果创建成功或已创建则返回true,如果创建失败则返回false 更多...
 
void _membersInit ()
 
void _resetManaged ()
 
- Protected 成员函数 继承自 winux::EnableSharedFromThis< AsyncSocket >
constexpr EnableSharedFromThis () noexcept
 
 EnableSharedFromThis (EnableSharedFromThis const &) noexcept
 
EnableSharedFromThisoperator= (EnableSharedFromThis const &) noexcept
 

Protected 属性

ErrorHandlerFunction _ErrorHandler
 
- Protected 属性 继承自 eiennet::Socket
AddrFamily _addrFamily
 
SockType _sockType
 
Protocol _protocol
 
winux::uint32 _attrSendTimeout
 
winux::uint32 _attrRecvTimeout
 
int _attrSendBufSize
 
int _attrRecvBufSize
 
bool _attrBlocking
 
bool _attrBroadcast
 
bool _attrReUseAddr
 
bool _attrIpv6Only
 
std::vector< AttrCategory_attrExecSets
 
int _sock
 
bool _isNewSock
 

友元

class IoService
 

额外继承的成员函数

- 静态 Public 属性 继承自 eiennet::Socket
static int const MsgDefault
 
static int const MsgOob
 
static int const MsgPeek
 
static int const MsgDontRoute
 
static int const MsgWaitAll
 
static int const MsgPartial
 
static int const MsgInterrupt
 
static int const MsgMaxIovLen
 
static int const SdReceive
 
static int const SdSend
 
static int const SdBoth
 
- Protected 类型 继承自 eiennet::Socket
enum  AttrCategory {
  attrNone, attrBlocking, attrBroadcast, attrReUseAddr,
  attrSendTimeout, attrRecvTimeout, attrSendBufSize, attrRecvBufSize,
  attrIpv6Only
}
 

详细描述

异步套接字

在文件 eiennet_async.hpp195 行定义.

成员类型定义说明

错误处理

参数
sock出错的Socket

在文件 eiennet_async.hpp273 行定义.

构造及析构函数说明

eiennet::AsyncSocket::AsyncSocket ( IoService ioServ,
int  sock = -1,
bool  isNewSock = false 
)
inlineexplicitprotected

构造函数1

在文件 eiennet_async.hpp199 行定义.

eiennet::AsyncSocket::AsyncSocket ( IoService ioServ,
AddrFamily  af,
SockType  sockType,
Protocol  proto 
)
inlineprotected

构造函数2

在文件 eiennet_async.hpp205 行定义.

成员函数说明

static winux::SharedPointer<AsyncSocket> eiennet::AsyncSocket::New ( IoService ioServ,
int  sock = -1,
bool  isNewSock = false 
)
inlinestatic

在文件 eiennet_async.hpp211 行定义.

static winux::SharedPointer<AsyncSocket> eiennet::AsyncSocket::New ( IoService ioServ,
AddrFamily  af,
SockType  sockType,
Protocol  proto 
)
inlinestatic

在文件 eiennet_async.hpp216 行定义.

winux::SharedPointer<AsyncSocket> eiennet::AsyncSocket::accept ( EndPoint ep = nullptr)
inline

在文件 eiennet_async.hpp221 行定义.

void eiennet::AsyncSocket::setDataPtr ( void *  data)
inline

设置套接字关联数据

在文件 eiennet_async.hpp228 行定义.

void* eiennet::AsyncSocket::getDataPtr ( ) const
inline

获取套接字关联数据

在文件 eiennet_async.hpp230 行定义.

template<typename _Ty >
_Ty* eiennet::AsyncSocket::getDataPtr ( ) const
inline

获取套接字关联数据

在文件 eiennet_async.hpp233 行定义.

IoService& eiennet::AsyncSocket::getService ( ) const
inline

获取IO服务对象

在文件 eiennet_async.hpp236 行定义.

void eiennet::AsyncSocket::acceptAsync ( IoAcceptCtx::OkFunction  cbOk,
winux::uint64  timeoutMs = -1,
IoAcceptCtx::TimeoutFunction  cbTimeout = nullptr 
)

接受客户连接(异步)

void eiennet::AsyncSocket::connectAsync ( EndPoint const &  ep,
IoConnectCtx::OkFunction  cbOk,
winux::uint64  timeoutMs = -1,
IoConnectCtx::TimeoutFunction  cbTimeout = nullptr 
)

连接服务器(异步)

void eiennet::AsyncSocket::recvUntilSizeAsync ( size_t  targetSize,
IoRecvCtx::OkFunction  cbOk,
winux::uint64  timeoutMs = -1,
IoRecvCtx::TimeoutFunction  cbTimeout = nullptr 
)

接收直到指定大小的数据(异步)

void eiennet::AsyncSocket::recvAsync ( IoRecvCtx::OkFunction  cbOk,
winux::uint64  timeoutMs = -1,
IoRecvCtx::TimeoutFunction  cbTimeout = nullptr 
)
inline

接收数据(异步)

在文件 eiennet_async.hpp244 行定义.

void eiennet::AsyncSocket::sendAsync ( void const *  data,
size_t  size,
IoSendCtx::OkFunction  cbOk,
winux::uint64  timeoutMs = -1,
IoSendCtx::TimeoutFunction  cbTimeout = nullptr 
)

发送数据(异步)

void eiennet::AsyncSocket::sendAsync ( winux::Buffer const &  data,
IoSendCtx::OkFunction  cbOk,
winux::uint64  timeoutMs = -1,
IoSendCtx::TimeoutFunction  cbTimeout = nullptr 
)
inline

发送数据(异步)

在文件 eiennet_async.hpp251 行定义.

void eiennet::AsyncSocket::recvFromUntilSizeAsync ( size_t  targetSize,
IoRecvFromCtx::OkFunction  cbOk,
winux::uint64  timeoutMs = -1,
IoRecvFromCtx::TimeoutFunction  cbTimeout = nullptr 
)

无连接,接收直到指定大小的数据(异步)

void eiennet::AsyncSocket::recvFromAsync ( IoRecvFromCtx::OkFunction  cbOk,
winux::uint64  timeoutMs = -1,
IoRecvFromCtx::TimeoutFunction  cbTimeout = nullptr 
)
inline

无连接,接收数据(异步)

在文件 eiennet_async.hpp258 行定义.

void eiennet::AsyncSocket::sendToAsync ( EndPoint const &  ep,
void const *  data,
size_t  size,
IoSendToCtx::OkFunction  cbOk,
winux::uint64  timeoutMs = -1,
IoSendToCtx::TimeoutFunction  cbTimeout = nullptr 
)

无连接,发送数据(异步)

void eiennet::AsyncSocket::sendToAsync ( EndPoint const &  ep,
winux::Buffer const &  data,
IoSendToCtx::OkFunction  cbOk,
winux::uint64  timeoutMs = -1,
IoSendToCtx::TimeoutFunction  cbTimeout = nullptr 
)
inline

无连接,发送数据(异步)

在文件 eiennet_async.hpp265 行定义.

void eiennet::AsyncSocket::onErrorHandler ( ErrorHandlerFunction  handler)
inline

在文件 eiennet_async.hpp273 行定义.

virtual void eiennet::AsyncSocket::onError ( winux::SharedPointer< AsyncSocket sock)
inlineprotectedvirtual

在文件 eiennet_async.hpp273 行定义.

友元及相关函数文档

friend class IoService
friend

在文件 eiennet_async.hpp279 行定义.

类成员变量说明

ErrorHandlerFunction eiennet::AsyncSocket::_ErrorHandler
protected

在文件 eiennet_async.hpp273 行定义.


该类的文档由以下文件生成: