设为首页 收藏本站
查看: 1027|回复: 0

通过FTP实现vxsim和vxworks主机之间的文件传输

[复制链接]

尚未签到

发表于 2015-5-29 05:37:50 | 显示全部楼层 |阅读模式
  为实现vxworks的目标机(vxsim模拟器)和vxworks主机之间的文件传输,需要先搭建vxworks网络环境,当vxworks主机和vxsim能实现网络通信以后,再利用ftp协议就能实现vxworks和vxsim之间的文件传输了。
  
  关于vxworks网络环境的搭建,可以参考《ULIP及vxsim网络配置》(http://files.iyunv.com/lotusswan/ULIP.doc)一文。网上有很多相关的文章,这里不再详述,唯一需要说明一点的是:
  7、Launch target server,关闭Launch simulator后会提示你launch target server,点击Cancel,如果点击OK,会出现如下的错误提示:
  "tgtsvr (vxTarget@heiwa): Wed Aug 25 00:17:08 1999
  Wind River Systems Target Server: NT/Win95 version
  Error: Target vxsim5 unknown. Attach failed.
  Error: Backend initialization routine failed.
  Problem during Backend initialization
  Target Server will exit"
  你根本无法连接上目标机。
  当你按照上述的方式实现了主机和vxsim的通信以后,就可以编写ftp实现来实现文件传输了。
  
  关于ftp的程序编写,其实是很容易的事情,vxworks已经为我们提供了几个API函数可供我们使用,这里主要介绍两个:ftpXfer和ftpCommand。对于ftpXfer,相信使用过tornado进行程序调试的朋友都不会陌生,当ftp没开或者是网络故障时,目标机在进行加载的时候往往就会报错:ftpXfer error,这个时候就是调用这个函数返回了错误码。下面我们看看这个函数的具体用法:
  STATUS ftpXfer
    (
    char * host,              /* ftp服务器的IP地址,点分十进制,格式类似于"127.0.0.1"*/
    char * user,              /* 访问ftp服务器的用户名*/
    char * passwd,            /* 访问ftp服务器的密码 */
    char * acct,              /* 一般不用,直接填写为空字符串就可以了。*/
    char * cmd,               /* 发送给FTP服务器的命令,例如读取命令为"RETR"*/
    char * dirname,           /* 待访问文件所在的目录*/
    char * filename,          /* 待访问文件的文件名*/
    int *  pCtrlSock,         /* 存储返回的control socket文件描述符,也就是常说的fd*/
    int *  pDataSock          /* 存储返回的待访问文件的文件描述符*/
    )
  相信看到函数声明以后,就会明白该函数的使用方式了,如果出错,返回值为ERROR。
  
  下面再来看看ftpCommand的描述:
  int ftpCommand
    (
    int    ctrlSock,          /* control socket的文件描述符 */
    char * fmt,               /* 待传递的ftp命令 */
    int    arg1,              /* ftp命令的参数*/
    int    arg2,
    int    arg3,
    int    arg4,
    int    arg5,
    int    arg6
    )
和ftpXfer一样,使用方式十分简单。
  
  知道这两个函数以后,可以开始编写程序了,下面给出一个实例:
  
  #include "errnoLib.h"
#include "ftpLib.h"

  #define HOST "192.168.255.254"
#define USER "target"
#define PWD "123"
#define W_DIR "d:/downloads"
#define RD_CMD "RETR %s" /*get file from ftp server*/
#define FILE "log.txt"

  void ftpGo()
{
/*semGive(sem_ftp); */
}

  void ftp()
{
int ctrlSock;
int dataSock;
char buf[512];
int nBytes;

   if(ERROR == ftpXfer(HOST, USER, PWD, "", RD_CMD, W_DIR, FILE, &ctrlSock, &dataSock))
{
  printf("\r\n ftp connected failed!");
  return ;
}

   while((nBytes = read(dataSock, buf, sizeof(buf))) > 0)
{
  printf("\r\n it is [%s]", buf);
}

   close(dataSock);
   if(ERROR == nBytes)
  printf("\r\nit is reading error.");

   if(ftpCommand(ctrlSock, "QUIT", 0, 0, 0, 0, 0, 0) == FTP_COMPLETE)
  printf("\r\nftp is completed");
close(ctrlSock);
}

  
  程序编写完成以后,就是调试了,调试也是很容易,直接在shell下输入ftp就可以看到主机上的文件内容被打印在屏幕上了。不过需要说明一点的是,vxworks自带的vxsim是不支持ftp访问的,因此需要自己编译一个vxsim虚拟机并且加上ftp client组件,至于这部分内容如何做到,相信你看完了《ULIP及vxsim网络配置》一文,应该不会有疑问。
  
  祝大家好运!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71609-1-1.html 上篇帖子: Ftp Adapter 下篇帖子: 开源FTP工具 FileZilla
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表