资源简介

标准C写成的实现FTP上传下载功能的源代码,浅显易懂,编程新手可以看看其层次划分和代码编写风格。

资源截图

代码片段和文件信息

//====================================================================
//                
// Copyright (C) 2006-2008  Frank.Ning
//                
// Filename:      axel.c
// Author:        Frank.Ning 
// Description:   
//                
// $Id: axel.cv 1.9 2007/11/30 08:18:11 frank Exp $
//                
//====================================================================

#include “axel.h“

static const char* const axel_c_version =
   “$Id: axel.cv 1.9 2007/11/30 08:18:11 frank Exp $“;

/* Axel */
static void save_state( axel_t *axel );
#ifdef WIN32
static DWORD WINAPI setup_thread(LPVOID c );
#else
static void *setup_thread( void * );
#endif
static void axel_message( axel_t *axel char *format ... );
static void axel_divide( axel_t *axel );

static char *buffer = NULL;

/* Create a new axel_t structure */
axel_t *axel_new( conf_t *conf  int file_id
                  const char *url  const char* local_file Orention_t direct )
{
   // search_t *res;
   axel_t *axel;
//    url_t *u;
   int i tmpfd;
   char *s;
   struct stat ft;
   
   axel = malloc( sizeof( axel_t ) );
   memset( axel 0 sizeof( axel_t ) );
   axel->conf = conf;
   axel->conn = malloc( sizeof( conn_t ) * axel->conf->num_connections );
   memset( axel->conn 0 sizeof( conn_t ) * axel->conf->num_connections );
   if( axel->conf->max_speed > 0 )
   {
      if( (float) axel->conf->max_speed / axel->conf->buffer_size < 0.5 )
      {
         if( axel->conf->verbose >= 2 )
            axel_message( axel _(“Buffer resized for this speed.“) );
         axel->conf->buffer_size = axel->conf->max_speed;
      }
      axel->delay_time = (int) ( (float) 1000000 / axel->conf->max_speed * axel->conf->buffer_size * axel->conf->num_connections );
   }
   if( buffer == NULL )
      buffer = malloc( max( MAX_STRING axel->conf->buffer_size ) );

   axel->url = malloc( sizeof( url_t ) );
   axel->url->next = axel->url;
   strcpy( axel->url->text (char *) url );

   axel->direct = direct;

   axel->status = malloc( sizeof(conn_status_t) );
   memset( axel->status 0 sizeof(conn_status_t) );
   
   for( i = 0; i < axel->conf->num_connections ; ++i )
   {      
      axel->conn[ i ].file_id  = file_id;
      axel->conn[ i ].direct = direct;
      axel->status->mask |= ( 1 << i );
      
   }
   
#if 0
   if( count == 0 )
   {
      axel->url = malloc( sizeof( url_t ) );
      axel->url->next = axel->url;
      strcpy( axel->url->text (char *) url );
   }
   else
   {
      res = (search_t *) url;
      u = axel->url = malloc( sizeof( url_t ) );
      for( i = 0; i < count; i ++ )
      {
         strcpy( u->text res[i].url );
         if( i < count - 1 )
         {
            u->next = malloc( sizeof( url_t ) );
            u = u->next;
         }
         else
         {
            u->next = axel->url;
         }
      }
   }
#endif
    
   axel->conn[0].conf = axel->conf;
   axel->conn[0].status = axel->status;
   
   if( !conn_set( &axel->conn

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      33005  2008-01-16 15:19  src\axel.c

     文件       3147  2008-01-14 10:57  src\axel.h

     文件       2829  2007-11-05 14:31  src\axel.h.~1.6.~

     文件     412865  2008-01-14 11:32  src\axel.o

     文件        989  2007-10-23 16:44  src\conf.h

     文件     395529  2008-01-14 11:17  src\conf.o

     文件       8631  2008-01-07 11:09  src\conn.c

     文件       8601  2007-11-15 10:07  src\conn.c.~1.5.~

     文件       1666  2008-01-14 10:57  src\conn.h

     文件       1602  2007-11-15 10:07  src\conn.h.~1.5.~

     文件     401658  2008-01-14 11:17  src\conn.o

     文件       9490  2008-01-14 11:46  src\ftp.c

     文件       1129  2007-11-15 10:07  src\ftp.h

     文件     401836  2008-01-14 11:46  src\ftp.o

     文件       4946  2007-10-23 09:14  src\http.c

     文件       1287  2007-10-23 09:14  src\http.h

     文件     399067  2008-01-14 11:17  src\http.o

     文件       1128  2008-01-11 16:13  src\inet_test.c

     文件          0  2008-01-11 16:04  src\inet_test.c.~1~

     文件      10658  2008-01-14 11:46  src\libwww.a

     文件        407  2008-01-14 11:46  src\libwww.def

     文件       1195  2007-11-05 10:00  src\Makefile

     文件       1571  2007-10-23 16:44  src\socket_impl.c

     文件       1064  2007-10-23 09:14  src\socket_impl.h

     文件     376997  2008-01-14 11:17  src\socket_impl.o

     文件       2033  2007-11-05 10:04  src\tcp.c

     文件        661  2007-10-23 09:14  src\tcp.h

     文件     393398  2008-01-14 11:17  src\tcp.o

     文件     386265  2008-01-14 11:50  src\test.o

     文件        108  2007-11-06 15:08  src\test.sh

............此处省略29个文件信息

评论

共有 条评论