fastdo  0.6.8
eiennet::ip::tcp::Socket类 参考

TCP/IP套接字 更多...

#include <eiennet_socket.hpp>

类 eiennet::ip::tcp::Socket 继承关系图:
eiennet::ip::tcp::Socket 的协作图:

Public 类型

typedef eiennet::Socket BaseClass
 
- 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 成员函数

 Socket (int sock, bool isNewSock=false)
 构造函数1,包装现有socket描述符 更多...
 
 Socket ()
 构造函数2. 更多...
 
 Socket (Socket &&other)
 移动构造函数 更多...
 
Socketoperator= (Socket &&other)
 移动赋值操作 更多...
 
winux::SharedPointer< Socketaccept (EndPoint *ep=NULL)
 接受一个客户连接 更多...
 
- Public 成员函数 继承自 eiennet::Socket
 Socket (int sock=-1, bool isNewSock=false)
 构造函数1, 包装现有socket描述符. 更多...
 
 Socket (AddrFamily af, SockType sockType, Protocol proto)
 构造函数2,指定socket的'地址簇','类型','协议'. 更多...
 
 Socket (Socket &&other)
 移动构造函数 更多...
 
Socketoperator= (Socket &&other)
 移动赋值操作 更多...
 
virtual ~Socket ()
 
void setParams (AddrFamily af, SockType sockType, Protocol proto)
 指定socket的参数:'地址簇','类型','协议' 更多...
 
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 , size_t _N = sizeof(_PodType)>
bool sendUntilType (_PodType const &v, 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 , size_t _N = sizeof(_PodType)>
bool recvUntilType (_PodType *v, 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, SockType sockType=sockStream)
 绑定地址。若套接字尚未创建则创建套接字,sockType指定套接字类型。通常需要绑定地址的是服务端,一般使用sockStream。 更多...
 
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非广播 更多...
 
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 成员函数 继承自 eiennet::Socket
static int ErrNo ()
 从errno获取错误码 更多...
 
- 静态 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
winux::MembersWrapper< struct Socket_Data > _self
 

详细描述

TCP/IP套接字

在文件 eiennet_socket.hpp739 行定义.

成员类型定义说明

构造及析构函数说明

eiennet::ip::tcp::Socket::Socket ( int  sock,
bool  isNewSock = false 
)
inlineexplicit

构造函数1,包装现有socket描述符

参数
socksocket描述符(Windows平台是socket句柄)
isNewSock指示是否为新建socket. 如果为true,则会在Socket destroy时,自动close(sock).

在文件 eiennet_socket.hpp748 行定义.

eiennet::ip::tcp::Socket::Socket ( )
inline

构造函数2.

在文件 eiennet_socket.hpp751 行定义.

eiennet::ip::tcp::Socket::Socket ( Socket &&  other)
inline

移动构造函数

在文件 eiennet_socket.hpp755 行定义.

成员函数说明

winux::SharedPointer<Socket> eiennet::ip::tcp::Socket::accept ( EndPoint ep = NULL)
inline

接受一个客户连接

在文件 eiennet_socket.hpp765 行定义.

函数调用图:

Socket& eiennet::ip::tcp::Socket::operator= ( Socket &&  other)
inline

移动赋值操作

在文件 eiennet_socket.hpp757 行定义.


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