C++实现的FTP案例代码解析

2016-01-05 19:46:22|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C/C++, 网络通信|来源:唯设编程网

3. 接收FTP服务器的返回内容

int CFTP::recv_buf(char* recv_buf,int buf_length) 
{ 
	memset(recv_buf,'',buf_length);
	int len = recv(m_sockctrl,recv_buf,buf_length,0); 	
	if(-1 == len){		
		return  WSAGetLastError();
	}
	//接收残余数据
	char tmp[1024] = {0};

	while(len != SOCKET_ERROR && len != 0){
		len = recv(m_sockctrl,tmp,sizeof(tmp),0);
		if(len != SOCKET_ERROR && len != 0){
			strcat(recv_buf,tmp);
			memset(tmp,0,sizeof(tmp));
		}
	}
	//应该保存ftp运行日志
	save_log(recv_buf, m_pLogFile);
	return 0; 
} 

通过socket接收数据使用的函数是recv,使用while循环接收,知道全部接收完成,最后调用了save_log保存日志信息。

4. 保存日志文件

void CFTP::save_log( const char* str_log, FILE* pLogFile )
{	
	//格式化当前系统时间
	time_t nowtime = time(NULL); //获取当前时间
	struct tm *local = localtime(&nowtime);  //获取当前系统时间
	char tmp[2048] = {0};
	sprintf_s(tmp,"【%d-%d-%d %d:%d:%d】 %s",local->tm_year+1900,
		local->tm_mon+1,
		local->tm_mday,
		local->tm_hour,
		local->tm_min,
		local->tm_sec,
		str_log); 
	//连接字符串
	//strLog
	fwrite(tmp,strlen(tmp),1,pLogFile);
}

通过time函数获取系统时间,文件使用fwrite将内容写入文件中。

发表评论0条 】
网友评论(共?条评论)..
C++实现的FTP案例代码解析