【基于linux_C语言源码开发ftp客户端发送jpg图片到ftp服务器】

基于linux_C语言源码开发ftp客户端发送jpg图片到ftp服务器

状态轮询函数

  1. 这个函数会每毫秒轮询一次数组各值的状态
  2. 这样能确保ftp同时发送图片数量为MAX_FTP_UPLOAD_NUM(确保不会因同时发送太多张图片导致cpu使用率过高)
void ftp_CheckGroup()
{
    int i = 0;  
    pthread_mutex_lock(&gFtpmutex);
    for(i=0; i<MAX_FTP_UPLOAD_NUM;i++)
    {
        if(STATUS_WAIT == gftpfileinfo[i].uploadstatus)
        {
            if(0 == ftp_CreateUploadTask(&(gftpfileinfo[i])))
            {
                gftpfileinfo[i].uploadstatus = STATUS_UPLOADING;
            }
            else
            {
                printf("%s %d error! clear file[%s] from ftp group!\n", __FUNCTION__, __LINE__, gftpfileinfo[i].filename);
                memset(&(gftpfileinfo[i]), 0, sizeof(stftpupload));
            }
        }
    }
EXIT:
	pthread_mutex_unlock(&gFtpmutex);
}

ftp上传数据线程

void* mrecord_ftp_uploadthread(void* param)
{	
	// pthreadinfo_add((char *)__func__);
	char* tmp;
	int sockfd;
	int ret = 0;
	char acFolder[32]={0};
	char dstPath[32]={0};
	char dstFile[32]={0};

    stftpupload* pstftpupload = param;
    

	if(0 == strlen(pstftpupload->filename))
	{
		printf("mrecord_ftp_uploadthread: illegal param.\n");
		goto EXIT;
	}

	//抓拍类型文件夹
	strcpy(acFolder, "Snap");

	memcpy(dstPath,pstftpupload->filename,strlen(pstftpupload->filename));
    memcpy(dstFile,pstftpupload->filename,strlen(pstftpupload->filename));
	//找到文件名
	printf("dst path: %s ,dst file: %s\n",dstPath,dstFile);

	sockfd = ftp_connect("172.20.10.20", 21, "liu", "123");//ftp地址、端口号、账户名、密码
	if(sockfd < 0)
	{
		printf("mrecord_ftp_uploadthread: ftp_connect return fail.\n");
		goto EXIT;
	}

	ftp_mkd(sockfd,acFolder);//在ftp服务器创建文件夹
	ftp_cwd(sockfd,acFolder);
	
	ret = ftp_storfile(sockfd, pstftpupload->filename, dstFile, NULL, NULL);//开始发送文件数据
	if(ret < 0)
	{
		printf("mrecord_ftp_uploadthread: ftp_storfile return fail.\n");
        printf("delete file[%s], ret [%d]\n",dstFile, ftp_deletefile(sockfd, dstFile));
		goto QUIT;
	}

	ftp_cdup(sockfd);  //回到上一级目录
	
QUIT:
	ret = ftp_quit(sockfd);
	if(ret < 0)
	{
		printf("mrecord_ftp_uploadthread: ftp_quit return fail.\n");
	}
EXIT:
    ftp_SetCurFile(pstftpupload->filename, FTP_UPLOAD_FREE, 0);
	return NULL;
}

ftp源码下载点这~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I&You

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值