精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

FileZilla 源代碼分析8

系統(tǒng) Linux
FileZilla是一個(gè)免費(fèi)開源的FTP客戶端軟件,分為客戶端版本和服務(wù)器版本,具備所有的FTP軟件功能。可控性、有條理的界面和管理多站點(diǎn)的簡化方式使得Filezilla客戶端版成為一個(gè)方便高效的FTP客戶端工具,而FileZilla Server則是一個(gè)小巧并且可靠的支持FTP&SFTP的FTP服務(wù)器軟件。

FileZilla是一種快速、可信賴的FTP客戶端以及服務(wù)器端開放源代碼程式,具有多種特色、直覺的接口。本文就給大家分析下FileZilla的源代碼。

  FTP客戶通過ftp localhost命令與FileZilla服務(wù)器建立socket連接后,F(xiàn)ileZilla Server顯示了welcome信息,這時(shí)屏幕上顯示類似(我們以windows下的ftp命令作為sample):

  Connected to dell.

  220-FileZilla Server version 0.9.18 beta

  220-written by Tim Kosse (Tim.Kosse@gmx.de)

  220 Please visit http://sourceforge.net/projects/filezilla/

  User (dell:(none)):

  提示輸入用戶名,假設(shè)這時(shí)用戶輸入whg,回車,這時(shí)ftp客戶端會(huì)將這用戶輸入的字符翻譯成標(biāo)準(zhǔn)的FTP命令"USER whg"發(fā)送到服務(wù)器,因?yàn)檫@時(shí)是CControlSocket對(duì)這個(gè)socket進(jìn)行監(jiān)聽,并且recv相關(guān)的事件通過前面提到的分發(fā)機(jī)制,最終分發(fā)到 CControlSocket的OnReceive方法,下面我看一下這個(gè)方法:

  m_antiHammeringWaitTime還不知是起什么作用,在對(duì)源代碼進(jìn)行跟蹤的時(shí)候,其剛開始的值是0,因此先跳過這個(gè)。

  下段是獲得傳輸速度限制SpeedLimit,如果沒有限制,則為-1。

  再往下:

  int numread = Receive(buffer, len); // 調(diào)用recv來獲得socket數(shù)據(jù),取長度為len的數(shù)據(jù)放到buffer中

  讀取成功后,將buffer中的接收到的數(shù)據(jù)一個(gè)字節(jié)一個(gè)字節(jié)放到m_RecvBuffer中:

  m_RecvBuffer[m_nRecvBufferPos++] = buffer[i];

  然后將將剛才收到的m_RecvBuffer放入m_RecvLineBuffer:

  m_RecvLineBuffer.push_back(m_RecvBuffer);

  m_RecvLineBuffer相當(dāng)于一個(gè)命令池,里面存放著用戶發(fā)送來,但還沒有處理的命令。

  ***當(dāng)這個(gè)recv處理完后,調(diào)用ParseCommand()來解釋這個(gè)命令。

  首先通過GetCommand()取出m_RecvLineBuffer中最前面的命令,并解釋成命令command,以及參數(shù)args,如剛才的命令USER whg就被解釋成command=USER, args=whg

  下面的循環(huán):

  for (int i = 0; i < (sizeof(commands)/sizeof(t_command)); i++)

  通過在預(yù)先定義的FTP Server所有命令commands中,查找是否包含command,從而校驗(yàn)剛才收到的命令的合法性,如果command不在commands中,顯示command是非法命令,這時(shí)發(fā)送客戶端

  Send(_T("500 Syntax error, command unrecognized."));

  即使命令是合法的,但如果參數(shù)不對(duì)(bHasargs指定這個(gè)命令是否需要參數(shù)),即有些命令必須帶參數(shù),而args沒有,這時(shí)會(huì)發(fā)送:

  Send(_T("501 Syntax error"));

  下面:

  if (!m_RecvLineBuffer.empty())

  m_pOwner->PostThreadMessage(WM_FILEZILLA_THREADMSG, FTM_COMMAND, m_userid);

  表示如果命令緩沖區(qū)中還有未處理的命令,則發(fā)送消息給CServerThread,CServerThread在方法OnThreadMessage中處理這個(gè)消息:

  else if (wParam==FTM_COMMAND)

  { //Process a command sent from a client

  CControlSocket *socket=GetControlSocket(lParam);

  if (socket)

  socket->ParseCommand();

  }

  在GetControlSocket()方法中:

  CControlSocket * CServerThread::GetControlSocket(int userid)

  {

  CControlSocket *ret=0;

  EnterCritSection(m_threadsync);

  // 下面這個(gè)map是user -> CControlSocket,即通過userid找到服務(wù)這個(gè)userid的CControlSocket

  std::map::iterator iter=m_LocalUserIDs.find(userid);

  if (iter!=m_LocalUserIDs.end())

  ret=iter->second;

  LeaveCritSection(m_threadsync);

  return ret;

  }

  可見,發(fā)送這個(gè)消息的作用是讓CControlSocket繼續(xù)調(diào)用ParseCommand()來處理下一個(gè)命令。

  回到最初的ParseCommand(),如果命令參數(shù)也沒有問題,下面檢查這個(gè)命令是否必須先登錄再使用(由bValidBeforeLogon指定),比如:get命令是必須先登錄的,而USER命令不用,如果必須先登錄,發(fā)送:

  Send(_T("530 Please log in with USER and PASS first."));

  下面同樣

  m_pOwner->PostThreadMessage(WM_FILEZILLA_THREADMSG, FTM_COMMAND, m_userid);

  命令都合格的話,下面:

  switch (nCommandID)

  來處理不同的命令,由于這時(shí)是COMMAND_USER命令,我們看一下處理過程:

  經(jīng)過一些處理后,下面發(fā)送

  Send(_T("331 Password required for ") + args);

  要求用戶輸入密碼,時(shí)客戶端屏幕上會(huì)顯示:

  331 Password required for whg

  Password:

  用戶輸入密碼后,回車,這時(shí)ftp客戶端會(huì)翻譯成標(biāo)準(zhǔn)的FTP命令"PASS 123456"發(fā)送到服務(wù)器,我們看一下ParseCommand()對(duì)這的處理:

  case COMMAND_PASS:

  else if (DoUserLogin(args))

  Send(_T("230 Logged on"));

  在DoUserLogin()認(rèn)定成功登錄后,發(fā)送成功登錄消息給客戶端,否則會(huì)發(fā)送錯(cuò)誤消息:

  Send(_T("530 Login or password incorrect!"));

  仔細(xì)看一下CPermissions::CheckUserLogin(),會(huì)發(fā)現(xiàn)密碼是經(jīng)過MD5加密的,并且在CServerThread創(chuàng)建時(shí),跟權(quán)限相關(guān)的成員變量就初始化了:

  m_pPermissions = new CPermissions;

  在CPermissions::Init()中,調(diào)用ReadSettings(),從配置文件中,將所有的用戶信息(包括密碼)都讀到內(nèi)存了,因此剛才的密碼校驗(yàn)只是內(nèi)存中的字符串比對(duì)。

  用戶成功登錄后,F(xiàn)TP客戶端顯示:

  C:\Documents and Settings\Administrator>ftp localhost

  Connected to dell.

  220-FileZilla Server version 0.9.18 beta

  220-written by Tim Kosse (Tim.Kosse@gmx.de)

  220 Please visit http://sourceforge.net/projects/filezilla/

  User (dell:(none)): whg

  331 Password required for whg

  Password:

  230 Logged on

  ftp>

  下面FTP服務(wù)器等待新的FTP命令了。

通過文章完整的描述,大家應(yīng)該知道了FileZilla 源代碼,希望對(duì)大家有幫助!

【編輯推薦】

責(zé)任編輯:趙鵬 來源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2011-02-23 15:33:42

FileZilla

2011-02-23 14:26:28

FileZilla

2011-02-23 13:47:33

FileZilla

2011-02-23 15:11:27

FileZilla

2011-02-23 15:26:01

FileZilla

2011-02-23 14:39:27

FileZilla

2011-02-23 14:46:21

FileZilla

2011-02-23 14:16:43

FileZilla

2011-02-23 14:54:58

FileZilla

2011-03-01 16:25:37

FileZilla

2011-03-01 16:01:08

FileZilla

2011-03-01 16:19:27

FileZilla

2011-03-01 16:32:58

FileZilla

2015-08-28 09:38:51

Linux源代碼分析工具

2018-05-25 14:16:55

NFS源代碼線程

2009-07-02 13:59:35

JSP后臺(tái)

2015-08-26 17:38:47

Linux源代碼

2011-08-24 15:42:38

LUA源代碼

2020-02-24 09:25:33

代碼開發(fā)工具

2012-02-20 14:47:08

JavaPlay
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品果冻传媒| 性欧美大战久久久久久久免费观看 | 性欧美丰满熟妇xxxx性久久久| 国产乱码精品一区二三赶尸艳谈| 久久综合一区二区| 国产日韩在线视频| 日本一区二区欧美| 国内成人精品| 日韩精品中文字幕一区二区三区| 免费在线观看视频a| 国产有码在线| 国产成人精品亚洲777人妖| 26uuu另类亚洲欧美日本一| 久久精品色妇熟妇丰满人妻| 国产精品对白久久久久粗| 色偷偷一区二区三区| 一区二区三区电影| 神马亚洲视频| 韩国av一区二区| 97超级碰在线看视频免费在线看| 99久久久无码国产精品不卡| 国产区精品视频在线观看豆花| 欧美亚洲高清一区二区三区不卡| www.xxx麻豆| aⅴ在线视频男人的天堂| 成熟亚洲日本毛茸茸凸凹| 国产精品久久久久秋霞鲁丝| 久久影院一区二区| 999精品色在线播放| 亚洲激情免费观看| 91亚洲一区二区| 日韩精选视频| 精品国产乱码久久久久久婷婷| 在线亚洲美日韩| 四虎成人免费在线| 成人动漫av在线| 成人黄色激情网| 日韩黄色片网站| 亚洲高清二区| 久久手机精品视频| 国产精品久久免费观看| 日韩有码中文字幕在线| 日韩三级精品电影久久久| 向日葵污视频在线观看| 亚洲高清黄色| 亚洲成人午夜电影| 成人国产在线看| 麻豆传媒视频在线观看免费| 久久精品视频一区二区三区| 国产综合 伊人色| 亚洲av无码乱码国产麻豆| 精品一区二区三区免费播放| 国产精品久在线观看| 亚洲天堂一区在线| 亚洲美女黄网| 久久久久久久久久久国产| 欧美精品成人久久| 在线中文字幕亚洲| 麻豆国产精品va在线观看不卡| 林心如三级全黄裸体| 国产一区二区三区四区| 亚洲欧美999| 成年人网站免费在线观看| 日韩激情毛片| 亚洲精品视频网上网址在线观看| 好吊一区二区三区视频| 欧美天堂社区| 日韩毛片中文字幕| 丰满少妇一区二区三区| 免费视频一区三区| 国产一区二区日韩精品欧美精品| 精品无码国产污污污免费网站 | 久久久xxx| 欧美性受xxxx白人性爽| 亚洲欧美综合另类| 日韩中文字幕麻豆| 国产精品一久久香蕉国产线看观看 | 噜噜噜噜噜在线视频| 久久久久久电影| 日韩久久久久久久久久久久久| 番号在线播放| 国产精品剧情在线亚洲| 手机在线视频你懂的| 四虎av在线| 欧美日韩国产精品一区二区不卡中文| 欧美色图色综合| 日本欧美不卡| 欧美精品一级二级| 久久久久亚洲av成人网人人软件| 欧美sss在线视频| 亚洲视频网站在线观看| 婷婷社区五月天| 欧美xxx在线观看| 97avcom| 在线免费观看av片| 国产91在线|亚洲| 欧美国产综合视频| 毛片av在线| 婷婷综合久久一区二区三区| a在线观看免费视频| 视频二区欧美| 亚洲午夜未满十八勿入免费观看全集| 三上悠亚作品在线观看| 亚洲免费精品| 成人久久一区二区| 熟妇高潮一区二区三区| 国产精品国产三级国产aⅴ原创| 神马午夜伦理影院| 666av成人影院在线观看| 欧美一区二区网站| www.黄色在线| 欧美午夜一区二区福利视频| 国产精品久久久久久久一区探花| 亚洲精品字幕在线观看| 日本一区二区不卡视频| 国产欧美日韩小视频| 成人精品国产亚洲| 亚洲国产精品推荐| 国产在线一卡二卡| 免费成人你懂的| 久久99精品久久久久久三级| a级影片在线观看| 色94色欧美sute亚洲线路二| 国产免费无码一区二区| 成人一二三区| 91干在线观看| 亚洲va欧美va| 中文字幕一区免费在线观看| 亚洲自偷自拍熟女另类| 2021年精品国产福利在线| 中文字幕日韩综合av| 你懂的国产在线| 福利电影一区二区| 一本一道久久a久久综合精品| 天堂资源在线| 亚洲成人aaa| 欧美又粗又大又长| 久久av资源站| 先锋影音日韩| 色综合一本到久久亚洲91| 亚洲精品久久视频| 久久精品国产亚洲AV无码麻豆 | 97激碰免费视频| 99久久久国产精品无码网爆 | 狠狠色综合色综合网络| 51精品国产人成在线观看 | av一区二区三区四区| 2021狠狠干| 一级欧美视频| 中文字幕不卡av| 久久精品视频2| 久久精品无码一区二区三区| 成人在线免费观看av| 久久电影在线| 性色av一区二区三区免费 | 亚洲精品视频网上网址在线观看| 日韩av一区二区在线播放| 国产成人激情av| www.男人天堂网| 亚洲成人偷拍| 欧美贵妇videos办公室| 亚洲h视频在线观看| 亚洲一区二区三区影院| 国产视频精品视频| 亚洲麻豆av| 久久精品二区| 黄色综合网址| 亚洲小视频在线| 中文亚洲av片在线观看| 1000精品久久久久久久久| 色综合五月婷婷| 欧美成人69| 99精品99久久久久久宅男| 超碰97国产精品人人cao| 亚洲国模精品一区| 久久久久久久久久成人| 中文字幕av在线一区二区三区| 久久黄色片网站| 亚洲精品国产首次亮相| av成人综合网| 新版的欧美在线视频| 伊人青青综合网站| av综合在线观看| 亚洲成人黄色影院| 麻豆av免费观看| 精品一区二区三区在线播放视频| 久久香蕉视频网站| 婷婷国产精品| 国产精品视频区1| 主播国产精品| 日韩电影中文字幕一区| 中文字幕一区二区人妻痴汉电车| **欧美大码日韩| 精品一区二区三区四区五区六区| 亚洲一区不卡| 一本色道婷婷久久欧美| 一区二区三区在线资源| 日韩av快播网址| 高h视频在线观看| 亚洲精品成人网| 国产尤物在线观看| 午夜视频在线观看一区二区三区| 日本欧美一区二区三区不卡视频| 国产精品99久| 精品少妇无遮挡毛片| 国产一区二区三区自拍| 色一情一乱一伦一区二区三区| 精品国产鲁一鲁****| 日本精品va在线观看| 黄网站免费在线播放| 日韩经典中文字幕在线观看| 国产乱人乱偷精品视频| 午夜精品一区二区三区电影天堂 | 欧美日韩国产123| 久青青在线观看视频国产| 91精品国产91热久久久做人人 | 国产精品久久久久久久久久东京| 2020国产在线视频| 亚洲少妇中文在线| 日韩一区二区三区不卡| 欧美色图天堂网| 国产精品久久久久久久妇| 亚洲欧洲成人自拍| 国产美女免费网站| 不卡的看片网站| 国产人妻精品久久久久野外| 水野朝阳av一区二区三区| 日韩激情视频一区二区| 亚洲乱码电影| 日本精品一区二区三区不卡无字幕| 91成人在线精品视频| 成人中文字幕+乱码+中文字幕| 黑人巨大亚洲一区二区久| 高清一区二区三区四区五区| 国产盗摄在线观看| 色噜噜狠狠狠综合曰曰曰| 麻豆av电影在线观看| 亚洲第一精品夜夜躁人人躁| 国产av精国产传媒| 欧美疯狂性受xxxxx喷水图片| 五月婷婷丁香在线| 一本大道久久a久久综合| 日韩精品一卡二卡| 亚洲成人一区在线| 久草视频免费在线| 樱桃视频在线观看一区| 91插插插插插插| 综合婷婷亚洲小说| 亚洲综合图片一区| 国产精品美女久久久久高潮 | 国产精品国产馆在线真实露脸 | 久久久久福利视频| 久久精品青草| 麻豆中文字幕在线观看| 区一区二视频| 亚洲看片网站| 四季av一区二区三区免费观看| 日韩国产精品一区二区| 深爱激情综合网| 欧美日韩大片一区二区三区| 国产精品一区2区3区| 日韩精品av一区二区三区| 欧美精选一区二区三区| 午夜午夜精品一区二区三区文| 清纯唯美综合亚洲| 国产高清免费在线| 国产精品mm| 国产午夜大地久久| 亚洲尤物影院| 牛夜精品久久久久久久| 久久99国产精品免费| 亚洲国产综合av| 成人晚上爱看视频| 人妻精品久久久久中文字幕| 久久精品一区蜜桃臀影院| 国产真人真事毛片视频| 亚洲女同女同女同女同女同69| 欧美黄色免费在线观看| 五月天丁香久久| 在线永久看片免费的视频| 色狠狠综合天天综合综合| 最新中文字幕第一页| 欧美一区二区三区在线看| 亚洲黄色小说网| 亚洲欧美日韩天堂| 麻豆tv入口在线看| 午夜精品一区二区三区视频免费看 | 日韩在线激情视频| 天天干在线视频论坛| 人人爽久久涩噜噜噜网站| 欧美日韩破处视频| 国产精品久久国产精品| 国产成人手机高清在线观看网站| 一区二区三区四区视频在线| 欧美日韩爆操| 麻豆传传媒久久久爱| 国产在线麻豆精品观看| 亚洲av成人无码一二三在线观看| 国产欧美一区二区精品忘忧草 | 麻豆蜜桃91| av中文字幕一区二区| 国产制服91一区二区三区制服| 一区二区高清| 久久久久久蜜桃一区二区| 丁香婷婷深情五月亚洲| 99精品全国免费观看| 亚洲综合一区二区| 中文字幕 视频一区| 欧美电影免费提供在线观看| 黄上黄在线观看| 欧美肥老妇视频| 成人在线免费av| 国产乱码精品一区二区三区不卡| 日韩欧美一区二区三区在线视频 | 欧美日韩国产亚洲一区| 无人在线观看的免费高清视频| 国产aⅴ综合色| 九一在线免费观看| 欧美色另类天堂2015| www黄色网址| 日韩亚洲综合在线| 欧美理论影院| 国产综合 伊人色| 欧美日韩精品免费观看视频完整| 污污网站免费看| 久久久久久久久岛国免费| 久久精品视频6| 日韩一区二区在线看| 在线免费看a| 国产成人黄色av| 欧美a一欧美| 国产高清www| 国产精品一区二区你懂的| 国产1区2区在线观看| 欧美性xxxx极品高清hd直播 | 激情久久五月天| 国产人妻大战黑人20p| 欧美日韩美女在线观看| 好吊视频一二三区| 欧美激情啊啊啊| 国产高清亚洲| 强伦女教师2:伦理在线观看| 日韩av在线发布| 国产肥白大熟妇bbbb视频| 午夜不卡av免费| 黄色aaa毛片| 欧美激情一区二区三区成人 | 欧美一区日本一区韩国一区| 亚洲1卡2卡3卡4卡乱码精品| 国产精品视频白浆免费视频| 欧美一区二区三区高清视频| 日韩免费毛片视频| 久久中文字幕电影| 国产做受高潮漫动| 日韩电影在线观看中文字幕 | 九一精品国产| 六月丁香婷婷激情| 久久久亚洲高清| 国产99久久久久久免费看| 亚洲女人天堂成人av在线| 9i看片成人免费高清| 欧美资源一区| 青草国产精品久久久久久| 极品尤物一区二区| 欧美日韩不卡一区| 最新国产露脸在线观看| 666精品在线| 亚洲高清激情| 女~淫辱の触手3d动漫| 欧美中文字幕不卡| 尤物视频在线免费观看| 成人在线视频网站| 欧美片第1页综合| 久久久久久久无码| 日韩欧美中文在线| seseavlu视频在线| 亚洲一区中文字幕| 一本色道久久| 性欧美精品男男| 51精品秘密在线观看| 美女网站视频在线| 久久精品二区| 精品综合久久久久久8888| 免费视频网站www| 日韩经典中文字幕| 日本午夜精品久久久久| 男人j进女人j| 99re视频这里只有精品| 中文字幕 人妻熟女| 不卡av在线网站| 理论片一区二区在线| 亚洲老女人av| 亚洲一区二区三区在线看| 男同在线观看| 成人亚洲激情网| 国产欧美日韩综合一区在线播放 | 一区二区三区四区视频精品免费| 人妻一区二区三区| 国产精品一二区| 日韩午夜av在线|