⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datasocket.h

📁 在Linux下使用GCC编制的FTP服务器
💻 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 + -