44 lines
1.8 KiB
C++
44 lines
1.8 KiB
C++
#ifndef HGL_TCP_SOCKET_INCLUDE
|
||
#define HGL_TCP_SOCKET_INCLUDE
|
||
|
||
#include<hgl/network/Socket.h>
|
||
namespace hgl
|
||
{
|
||
namespace network
|
||
{
|
||
int CreateTCPConnect(IPAddress *); ///<创建一个tcp连接
|
||
|
||
/**
|
||
* TCP连接处理基类<br>
|
||
* 提供统一的Recv/Send函数以及缓冲区,但请注意这个recv/send都只是针对缓冲区的,真正的send/recv在各自的派生类中。
|
||
*/
|
||
class TCPSocket:public Socket ///TCP连接处理基类
|
||
{
|
||
protected:
|
||
|
||
timeval time_out;
|
||
fd_set local_set,recv_set,err_set;
|
||
|
||
void ResetConnect();
|
||
|
||
public: //方法
|
||
|
||
TCPSocket() :Socket() {}
|
||
TCPSocket(int sock,const IPAddress *addr):Socket(sock,addr){ResetConnect();}
|
||
virtual ~TCPSocket()=default; ///<本类析构函数
|
||
|
||
bool SetNodelay(bool); ///<设置是否使用无延迟方式
|
||
void SetKeepAlive(bool,const int=7200,const int=75,const int=9); ///<设置自动保持连接机制
|
||
|
||
virtual bool UseSocket(int,const IPAddress *) override; ///<使用指定socket
|
||
|
||
virtual bool IsConnect(); ///<当前socket是否在连接状态
|
||
|
||
virtual int WaitRecv(double); ///<等待可接收数据
|
||
};//class TCPSocket
|
||
}//namespace network
|
||
|
||
using namespace network;
|
||
}//namespace hgl
|
||
#endif//HGL_TCP_SOCKET_INCLUDE
|