当前位置:  技术问答>linux和unix

ftp停止服务后恢复,继续上传文件不成功的问题,十万火急,过年了!!!!!!

    来源: 互联网  发布时间:2015-12-29

    本文导语:  程序基本功能描述:在arm linux环境中,一个程序中有两个线程,        一个从usb摄像头不断地获取图片,压缩成jpg格式,以指定格式的                文件名存到指定位置,并把图片名称入队列;        另一个...

程序基本功能描述:在arm linux环境中,一个程序中有两个线程,
       一个从usb摄像头不断地获取图片,压缩成jpg格式,以指定格式的
               文件名存到指定位置,并把图片名称入队列;
       另一个线程从队列中取文件名,上传图片到远程ftp服务器
问题描述:   因为是arm上的程序,所以必须保证在系统正常的情况下,这个程序也要正常运行,即:只要ftp服务开启,两个线程要正常,当ftp关闭,再恢复,程序必须正常
,但是我的程序实现不了,我的思路是,两个线程使用一个静态循环队列来实现同步,新图片的文件名入队,从队列取文件名,上传文件,然后删除文件,在上传线程中实现ftp的连接等准备工作,当上传图片失败后,重新连接ftp,尝试上传,失败,再尝试,同时删除图片(arm空间有限),循环...

哥们!我搞了两天了,没结果啊,经理天天催,过年了啊,哎!!!   请修改我的程序,或给我新的思路或更好的代码,谢谢!!! 

代码如下:
//重要的结构和函数声明
struct myfile{
    char file[50];
    char filename[50];
    FTPINFO ftpinfo;
};
struct queue{
    struct myfile array_file[MAX];
    int head,rear;
};
struct queue qu;
struct myfile struct_myfile;
struct myfile * f;
char imagefile[256];
char *ftpIP,*userName,*passWord;
void * uploadJpeg(struct queue *);
//主函数,不停地获取图片,并在里面创建上传线程
int main(int argc,char argv[]){
.....declare variables
.....init codes.....
.....
.....
    upldJpeg=pthread_create(&uploadp,NULL,(void *)uploadJpeg,&qu);
//创建上传图片的线程,判断创建成功有否的代码就省了
    while(max_try){   //max_try初始化为5,即尝试打开摄像头,5次失败的话退出
        dev=open(device,O_RDWR);
        if(dev==-1){
            if(!--max_try){
                fprintf(stderr,"can't open the device %s",device);
                retrun 1;
            }
        }else
             break;
    }
    while(1){       //不断地获取图片,并压缩,以当前时间精确到3位毫秒为文件名存到指定文件夹,同时文件名入队列
        ftime(&tp); // struct timeb * tp
        p=localtime(&tp.time); //struct tm * p
        sprintf(struct_myfile.filename,"%s%04d%02d%02d%02d%02d%02d%03d.jpg",coorid,(1900+p->tm_year),(1+p->tm_mon),p->tm_mday,p->tm_hour,p->tm_min,t->tm_sec,tp.millitm);
               //  coorid 是一个字符串常量,struct_myfile是一个结构提有file和filename是
               //长度为256的数组两个成员,保证使用sprintf()堆栈不益处
        sprintf(struct_myfile.file,"/picture/%s",struct_myfile.filename);
       //图片路径为/picture/..jpg
        if(*(struct_myfile.file)){    //如果文件创建成功,打开文件
            out=fopen(struct_myfile.file,"wb");// FILE * out
            if(!out){
                perror(struct_myfile.file);
                return 1;
            }    
        }
        fseek(out,0,SEEK_SET);
        if(!num){                    //int num=0; 该if块只执行一次
            if(v41_set_input(dev,input,norm)==-1)
                return 1;
            if(v41_check_size(dev,&width,&height)==-1)
                return 1;
        }
        if(format==FMT_YUV4MPEG){    //FMT_YUV4MPEG 是一个常量
            if(palette==VIDEO_PALETTE_YUV420P)
                retrun to_yuv(out,dev,width,height);//函数to_yuv 的功能我也不明白,
                          //有个注释:write YUV4MPEG stream which is nice for mpeg2enc
            break;
        }
        image=get_image(dev,width,height,paleete,&size);//获取图片,由char * image 指向
        if(image){         //获取成功,写入out 指向的打开文件
            put_image_jpeg(out,image,width,height,quality,palette);
            if(size)
                munmap(image,size);//释放image指向的内存
            else if(image)
                free(image);
        }
        if(!out)
            fclose(out);
        if(!in_queue(&qu,f))
            printf("can't enter the queue!n");
    }
    return 0;
}
//上传函数代码马上发出

|
哎,看完了,这么长的程序
提点建议吧;当上传不了图片时,你使用pthread_exit()自己结束线程,然后发送一个消息(或修改一个标志),使用另外一个程序用脚本重新启动就是了

|
> 我现在的程序,就是ftp断了之后,在尝试连接上传不行
为什么不行? 报什么错?

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何在客户端恢复FTP服务器(UNIX)被删除的文件???
  • java命名空间javax.print.attribute.standard类referenceurischemessupported的类成员方法: ftp定义及介绍
  • 用ftp命令连到ftp服务器后,在ftp提示符下用什么命令可以查看本地机器当前目录有哪些文件?
  • ftp协议介绍及ftp常用的上传下载等操作命令使用方法
  • 为什么会出现ftp: ftp/tcp: unknown service
  • FTP客户端Java类库 ftp4j
  • 请问如何在Redhat7.1下安装Ftp服务,如何开启Ftp帐号????请教!!!急急急急急急
  • FTP匿名登陆 LINUX 出现错误 linux FTP 550 permission
  • ubuntu装好BUM后,看不到FTP服务,如何开启FTP服务?
  • 基于Web的FTP客户端 net2ftp
  • 跨平台FTP服务器 Wing FTP Server
  • Node.js 的 FTP 客户端 node-ftp
  • FTP客户端 FTP Rush
  • 如何在Red Hat上建立FTP服务 并且建立FTP一个用户
  • 请教一个跑shell连ftp时获取ftp返回值的问题
  • Crob FTP Server并发用户测试,免费开放FTP,欢迎参加
  • 在安装linux7.2时忘了选择FTP,怎样手动安装FTP?
  • 在ubanto中使用ftp命令访问ftp站点,但是文件列表显示乱码
  • ftp client程序怎麼通過代理服務器連上ftp server?
  • ftp连接问题,就是linux连接windows ftp的问题,高手请进(在线等待)!!!!!
  • 我想在我的red hat linux开FTP服务器,有没有什么软件可以开FTP服务器的??
  • vsftpd ftp: ftp/tcp: unknown service 请教高手指点


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3