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

关于solaris ftp 上传文件至服务器的问题,急!!!!!!

    来源: 互联网  发布时间:2015-11-23

    本文导语:  同样的代码,我上传至windows的ftp服务器是可以的。但是上传至solaris ftp服务器就无法上传,请大侠指点,这是什么问题啊。。。。???? #include  #include  #include  #include  #include  #include  #include  #include  #include  ...

同样的代码,我上传至windows的ftp服务器是可以的。但是上传至solaris ftp服务器就无法上传,请大侠指点,这是什么问题啊。。。。????

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define ELOG __FILE__,__LINE__

#define FAIL 0
#define SUCCESS 1

#define FTPFIELD "FTPCONFIG"
#define HOSTADDR "HOST"
#define FTPPORT "PORT"
#define USERNAME "USERNAME"
#define PASSWORD "PASSWORD"
#define LOCALPATH "LOCALPATH"
#define REMOTEPATH "REMOTEPATH"

extern int h_errno;

char user[64]; //ftp usr
char passwd[64]; //ftp passwd

//ftp server address
struct sockaddr_in ftp_server, local_host;
struct hostent * server_hostent;

int sock_control;
int mode = 1; //ftp mode, 0 is PORT, 1 is PASV;

int printinfo(char * filename, int line, const char *format, ...)
{
va_list args;

   va_start(args, format);
printf("%st%dt:", filename, line);
vprintf(format, args);
va_end(args);

return 0;
}

/*-------------------------------------------------------*/
/* ridtail -- get rid of a string's newline character */
/*-------------------------------------------------------*/
char *ridtail(char *c_buffer)
{
    char *ctmp;
    int ilength;
    int len;

    len = strlen(c_buffer);
    ctmp = (char*)malloc(len);
    if (ctmp == NULL) {
        printf("f_ridtail::malloc fail!n");
        return c_buffer;
    }
    memset(ctmp, 0, len);
    if (*(c_buffer+len-1) == 0x0a) {
        if (*(c_buffer+len-2) == 0x0d)
            ilength = 2;
        else
            ilength = 1;
    } else {
        if (*(c_buffer+len-1) == 0x0d)
            ilength = 1;
        else
            ilength = 0;
    }
    memcpy(ctmp, c_buffer, len-ilength);
    memset(c_buffer, 0, len);
    memcpy(c_buffer, ctmp, len-ilength);
    free(ctmp);

    return c_buffer;
}


/*-----------------------------------------------------------*/ 
/* rridtabspc -- get rid of the right tab of string*/
/*-----------------------------------------------------------*/
char * rridtabspc(char *as_string)
{
   int li_i;

   for( li_i = strlen(as_string) - 1 ; li_i >= 0; li_i -- )  {
      if ((*(as_string + li_i) == ' ')||(*(as_string + li_i) == 0x09))  {
         *(as_string + li_i) = '';
         continue;
      } else
         break;
   }

   return as_string;
}

/*----------------------------------------*/
/* Read ini file to get private information */  
/* 0 -- success, -1 -- failure            */
/*----------------------------------------*/
int getprotocol(char *filename, char* cfldname, char* ckey, char* cvalue)
{
FILE *fp;

char crecord[1024];
char cfld[70];
char *p = NULL;
char *s = NULL;
char *e = NULL;
char skey[20];
char ctmp[500], ctmp2[500];
    
int  ilen;
int  ifind = FAIL;
    
rridtabspc(cfldname);
rridtabspc(ckey);

    
if ((fp = fopen(filename, "rb")) == NULL) {
perror("open file failed!n");
return -1;
}

while(!feof(fp)) {
memset(crecord, '', sizeof(crecord));
memset(skey, '', sizeof(skey));
if ( fgets(crecord, 100, fp) == NULL ) {
perror("read protocol error:");
fclose(fp);
return -1;
}
ridtail(crecord);
rridtabspc(crecord);

/*search field*/
if (ifind == FAIL)  {
/*check for field*/
if ( (crecord[0] != '[')||(crecord[strlen(crecord)-1] != ']') )  
continue;
else {
memset(cfld, 0, sizeof(cfld));
memcpy(cfld,crecord+1,((sizeof(cfld)sin_family = AF_INET;
        if(inet_addr(host_ip_addr) != -1)
{
                host->sin_addr.s_addr = inet_addr(host_ip_addr);
}
        else 
{
if((server_hostent = gethostbyname(host_ip_addr)) != 0)
{
memcpy(&host->sin_addr, server_hostent->h_addr,
        sizeof(host->sin_addr));
}
        else return 253;
}
        host->sin_port = htons(port);
return 1;
}

int rand_local_port()
{
int local_port;
srand((unsigned)time(NULL));
local_port = rand() % 40000 + 1025;
return local_port;
}

void cmd_err_exit(char * err_msg, int err_code)
{
printinfo(ELOG, "%sn", err_msg);
exit(err_code);
}

//get the server's reply message from sock_fd
int ftp_get_reply(int sock_fd)
{
static int reply_code = 0,count=0;
char rcv_buf[512];
count=read(sock_fd, rcv_buf, 510);
if(count > 0)
reply_code = atoi(rcv_buf);
else
return 0;
/***while(1)
{
if(count 

    
 
 

您可能感兴趣的文章:

  • solaris 10 下怎么安装jdk-6u5-solaris-i586.sh? ftp上传大文件中断怎么解决?
  • sun solaris 10 ftp 能上传不能下载和修改。便在cmd下面就可以。
  • 在SOLARIS下如何安装CVS服务器,请各位指点兄弟!多谢!
  • solaris 如何配置mail服务器
  • 请教关于用啥工具监控Solaris服务器的问题
  • 问一下,Solaris中建立的FTP服务,在服务器上有缓存吗?
  • 高分求助 Solaris10 x86 FTP服务器 外网不能登录
  • 问下sun的服务器是不是只能安装solaris
  • sparc 服务器 重新安装 solaris 10出错,请hotsolaris回答
  • solaris服务器怎么结普通PC机的显示器
  • sparc 服务器solaris10没有显卡如何远程桌面
  • sun sparc solaris 10 服务器 如何进入ok 状态
  • 用SUN的Enterprise 250装Solaris 8作DNS,服务器,怎么做?
  • sparc服务器 虚拟化安装多个solaris10
  • 请问solaris服务器里有没有类似于windows中“服务域”的功能
  • 有点急的问题------Solaris 的服务器端, 在WIN XP 下,如何安装 NFS客户端?
  • pc-solaris 8.0服务器安装问题(一)
  • solaris8下如何建立FTP服务器?
  • 请教:solaris下有什么命令可以取得所在服务器的IP?
  • solaris9做工作站, 可以ping通192.168.0.1(代理服务器),但上不了网.
  • x86版 的solaris10服务器无法启动,重装会不会丢失数据
  • 怎么修改Solaris服务器日期
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • solaris 8上能用gcc for solaris7 或 solaris9的版本吗?
  • Solaris菜鸟!!!请问Solaris SPARC和Solaris x86这两个版本之间有什么具体的差异吗?
  • 请问Solaris现在最高的版本是多少?Solaris8.0价格如何?Solaris8.0和Red Hat Enterprise Linux AS 3.0有何区别?
  • 请教solaris高手一个solaris安装问题
  • solaris 10下的多线程和solaris 5.8下多线程编译有什么区别??
  • 听说在solaris上运行java飞快,solaris有多大,如果不大,我想下载,哪有下载?
  • 请问:SOLARIS(for intel)如何装d-link网卡。哪儿下Solaris电子文档。
  • Solaris for X86 和Solaris for Sparc主要区别在哪?
  • 请问Solaris的优势?Solaris下开发相关及系统管理相关资料是否有提供?谢谢
  • telnet 进去的时候我看写着SUN OS5.8,这个是不是Solaris?我找不到Solaris5.8的软件?
  • 没有光碟,怎样从solaris8升级到solaris9?
  • solaris 10能不能远程桌面连接Solaris 10(或 Linux) ,不要安装其他软件
  • 请问高手,在Solaris 8 gcc3.1编译的 *.o 和库文件 *.a ,可以提供在Solaris 7,9下使用吗?
  • 我装了Solaris后,98和2000都找不到了,启动时直接进入Solaris,该怎么办,请高手指点!
  • solaris开发一窍不通,如何开发Solaris下的c程序?
  • 想用Virtual PC虚拟UNIX,求Solaris 10 ,Solaris 10 for x86版或已经设置好的虚拟文件?
  • 怎么修改IP(SOLARIS),怎么在WIN上用EXTRX!X连上SOLARIS
  • 专门为难solaris高手,之solaris10的修改最大TCP连接数问题
  • solaris root 的shell搞错了,提示 no shell root 进不了!(solaris 8 for x86)
  • 请问:PC版本的solaris9与sun的solaris9的区别,并且哪里有PC版本SOLARIS9的下载?


  • 站内导航:


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

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

    浙ICP备11055608号-3