📄 datasocket.h
字号:
/****************************************************
* 数据通道类
* 作者 gotter@163.com 2006-04-19
****************************************************/
#ifndef _DATA_SOCKET_H_
#define _DATA_SOCKET_H_
#include "Public.h"
#include "MySocket.h"
class CCtrlSocket;
class CDataSocket:public CMySocket
{
public:
enum RUN_TYPE
{
LIST,
RETR,
STOR
};
enum CONN_TYPE
{
PORT,
PASV
};
public:
//文件列表内容缓冲区
string m_sList;
//上传/下载文件名
string m_sFile;
//最大超时值
int m_iTimeout;
CCtrlSocket *m_pSockCtrl;
public:
CDataSocket();
virtual ~CDataSocket();
int PreparePasv();
int PreparePort(const char *pszAddr);
//启动工作线程
int Run(RUN_TYPE nRunType);
//停止工作线程
int Stop();
protected:
//超时时间片,1000毫秒,该语句在vc++6.0下将通不过
const static int TIME_SLICE=1000;
//用于接收PASV连接的侦听套接字
CMySocket m_sockListen;
//数据通道子线程ID
pthread_t m_dwThreadId;
//当前工作类型,上传/下载/文件列表
RUN_TYPE m_nRunType;
//连接类型,PASV或PORT
CONN_TYPE m_nConnType;
//允许和通知子线程停止运行的标志
bool m_bAllowRun;
//主机顺序的客户端IP地址,端口
unsigned int m_nClientIp,m_nClientPort;
protected:
//子线程入口函数,工作分发
static void *Dispatch(void *pvParam);
//文件列表处理
int List();
//下载文件到客户端
int Retr();
//上传文件到服务器
int Stor();
//建立连接
int Connect();
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -