資源簡介
標準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?conf->num_connections?;?++i?)
???{??????
??????axel->conn[?i?].file_id??=?file_id;
??????axel->conn[?i?].direct?=?direct;
??????axel->status->mask?|=?(?1?<??????
???}
???
#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???????{
?????????strcpy(?u->text?res[i].url?);
?????????if(?i??????????{
????????????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個文件信息
- 上一篇:od增長系數法程序可用于任意矩陣
- 下一篇:一個隨筆畫程序
評論
共有 條評論