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

📄 ftpserver.cpp

📁 在Linux下使用GCC编制的FTP服务器
💻 CPP
字号:
#include "Public.h"
#include "Tools.h"
#include "FtpServer.h"
	
int main(){
	CFtpServer ftpSvr;
	ftpSvr.Start();
	return 0;
}

void CFtpServer::SignChildExit(int iSignNo)
{
    pid_t pid;    
	int iExitCode;    
	pid=wait(&iExitCode);    
	TRACE("CCtrlSocket:%d exited\n",pid);
}

CFtpServer::CFtpServer()
{

}

CFtpServer::~CFtpServer()
{

}

int CFtpServer::Start()
{
	char szBuf[32];
	CCtrlSocket sockCtrl;
	//注册僵尸处理程序
	signal(SIGCHLD,SignChildExit);
	if(m_sockSvr.Create()!=0){
		perror("create server socket fail.\n");
		return -1;
	}
	ReadConfig("ListenPort","2121",szBuf,
		   sizeof(szBuf),"./ftpsvr.cfg");
	if(m_sockSvr.Listen(atoi(szBuf))!=0){
		printf("Listen port :%d failed!\n",atoi(szBuf));
		return -2;
	}
	ReadConfig("Timeout","90000",szBuf,
		   sizeof(szBuf),"./ftpsvr.cfg");
	sockCtrl.m_iTimeout=atoi(szBuf);
	while(true){
		m_sockSvr.Accept(&sockCtrl);
		if(fork()==0){//子进程
			m_sockSvr.Close();//在子进程里面不需要m_sockSvr
			sockCtrl.Start();
			break;
		}else{
			sockCtrl.Close();//父进程不再引用sockCtrl里的套接字对象
		}
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -