国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

FileZilla 源代碼分析10

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

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

前面已經分析過了FTP客戶登錄服務器的過程,現在來看一下常見的ls命令的處理過程。

用戶在FTP客戶端輸入ls命令后,ftp.exe首先發出port請求給服務器,在CControlSocket的ParseCommand()中被處理。

PORT命令的參數是形如:127.0.0.1.4.9,前4個表示客戶端的IP地址,后兩個根據規則4 * 256 + 9 = 1033,表示FTP客戶端臨時建立的用來與服務器建立數據連接的端口,例子所示為1033端口。

PORT命令的處理過程的代碼中前面都是用來獲取IP和臨時端口的:

case COMMAND_PORT:
...
port += 256 * _ttoi(args.Right(args.GetLength() - (i + 1))); // add ms byte to server socket
ip = args.Left(i);
...

下面:
m_transferstatus.ip = ip;
m_transferstatus.port = port;
m_transferstatus.pasv = 0;
Send(_T("200 Port command successful"));
break;
只是將FTP客戶端提供的臨時端口記錄到m_transferstatus中,然后發出200 Port command successful,等待FTP客戶端的下一個命令。由于用戶輸入的是ls命令,ftp.exe在PORT之后,發出NLST命令。

在case COMMAND_NLST的處理中,先是進行了一系列的參數、權限檢查,一切OK后:
if (!m_transferstatus.pasv) // 主動模式
{
   ...
}
else // 被動模式
{
   ...
}
由于主動模式是缺省值,因此看一下里面的代碼:
CTransferSocket *transfersocket = new CTransferSocket(this);
m_transferstatus.socket = transfersocket;
transfersocket->Init(pResult, TRANSFERMODE_NLST); // 只是一些參數的初始化
if (m_transferMode == mode_zlib) // 傳輸方式是否使用壓縮方式,缺省不使用,詳細參見FTP規范
{
if (!transfersocket->InitZLib(m_zlibLevel))
{
   Send(_T("550 could not initialize zlib, please use MODE S instead"));
   ResetTransferstatus();
   break;
}
}

if (!CreateTransferSocket(transfersocket)) // 建立數據連接
break;

SendTransferinfoNotification(TRANSFERMODE_LIST, physicalDir, logicalDir); // Use TRANSFERMODE_LIST instead of TRANSFERMODE_NLST.
Send(_T("150 Opening data channel for directory list."));

先看一下建立數據連接的代碼:
BOOL CControlSocket::CreateTransferSocket(CTransferSocket *pTransferSocket)
{
...
if (pTransferSocket->Connect(m_transferstatus.ip,m_transferstatus.port)==0)
...
}
無非是常規的socket方法建立連接,需要關注的是由服務主動發起連接,這正是主動模式的含義。我們先看完這一段,再看一下被動模式。

在CreateTransferSocket()完成后,調用:

SendTransferinfoNotification(TRANSFERMODE_LIST, physicalDir, logicalDir);

看一下里面:
void CControlSocket::SendTransferinfoNotification(const char transfermode, const CStdString& physicalFile, const CStdString& logicalFile, __int64 startOffset, __int64 totalSize)
{
t_connop *op = new t_connop;
op->op = USERCONTROL_CONNOP_TRANSFERINIT;
op->userid = m_userid;

t_connectiondata_transferinfo *conndata = new t_connectiondata_transferinfo;
conndata->transferMode = transfermode;
conndata->physicalFile = physicalFile;
conndata->logicalFile = logicalFile;
conndata->startOffset = startOffset;
conndata->totalSize = totalSize;
op->data = conndata;

m_pOwner->SendNotification(FSM_CONNECTIONDATA, (LPARAM)op);
}
可 見發送了一個消息給CServer,wParam參數是FSM_CONNECTIONDATA,表示這是跟connection相關的消息,lParam 帶的參數是USERCONTROL_CONNOP_TRANSFERINIT,表示傳輸開始或結束,我回去看一下CServer中的 OnServerMessage()相關代碼,在admin窗口的下面顯示了將用傳輸的信息。

下面,
Send(_T("150 Opening data channel for directory list."));
發送給FTP客戶端數據連接創建的消息,真正的數據傳輸的任務是交給數據連接了,即CTransferSocket。

我們回到被動模式,如果是被動模式:
if (!m_transferstatus.pasv)
{
...
}
else // 被動模式
{
...
m_transferstatus.socket->PasvTransfer();
}
看一下PasvTransfer()的實現:

void CTransferSocket::PasvTransfer()
{
if(bAccepted)
   if (!m_bStarted)
    InitTransfer(FALSE);
}

非常簡單,由于是被動模式,即由客戶端發起數據連接,因此CTransferSocket只需等待客戶端的連接就可以了,下面分析CTransferSocket的時候再仔細看一下相關的實現。

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

【編輯推薦】

責任編輯:趙鵬 來源: 網絡轉載
相關推薦

2011-02-23 14:16:43

FileZilla

2011-02-23 14:54:58

FileZilla

2011-02-23 14:46:21

FileZilla

2011-02-23 14:39:27

FileZilla

2011-02-23 15:11:27

FileZilla

2011-02-23 15:21:06

FileZilla

2011-02-23 15:26:01

FileZilla

2011-02-23 13:47:33

FileZilla

2011-02-23 14:26:28

FileZilla

2011-03-01 16:01:08

FileZilla

2011-03-01 16:19:27

FileZilla

2011-03-01 16:32:58

FileZilla

2011-03-01 16:25:37

FileZilla

2018-05-25 14:16:55

NFS源代碼線程

2015-08-28 09:38:51

Linux源代碼分析工具

2009-07-02 13:59:35

JSP后臺

2015-08-26 17:38:47

Linux源代碼

2011-08-24 15:42:38

LUA源代碼

2020-02-24 09:25:33

代碼開發工具

2012-02-20 14:47:08

JavaPlay
點贊
收藏

51CTO技術棧公眾號

国内外成人免费激情在线视频网站 | 成年视频在线观看| 日韩专区av| 中文字幕电影一区| 欧美在线精品免播放器视频| 国产一区调教| 国产精品美女久久| 欧美国产高清| 久久综合久久久| 国产麻豆精品theporn| 国产精品免费成人| 一区二区三区影院| 国产在线观看a| 一区二区中文字幕| 亲子伦视频一区二区三区| 91中文在线观看| 久久精品国产免费看久久精品| 青青在线免费观看| 亚洲欧美在线观看| 毛片在线看网站| 日韩视频欧美视频| 天天天综合网| 在线播放豆国产99亚洲| 国产视频一区二区在线| 国产在线视频网| 亚洲欧美在线一区二区| 亚洲婷婷影院| 亚洲精品日韩在线观看| 中文无字幕一区二区三区 | 992tv快乐视频| 久久综合国产精品| 精品国产999| 欧美 另类 交| 精品无码三级在线观看视频| 在线观看免费黄色片| 国产精品综合一区二区| 黑人糟蹋人妻hd中文字幕| 国产亚洲成年网址在线观看| 女人体1963| 色综合色综合色综合色综合色综合| gogogo高清在线观看免费完整版| 精品欧美乱码久久久久久| 国产69精品久久久久9999人| 欧美激情网站在线观看| 久久久久国产精品| 亚洲欧洲日夜超级视频| 91日韩在线专区| 超碰在线首页| 精品99999| 成人自拍在线| 精品日本一区二区三区在线观看| 国产精品1区二区.| 免费黄色网页| 精品免费视频一区二区| 成年人黄视频在线观看| 亚洲午夜未删减在线观看 | 日韩精品极品在线观看播放免费视频 | 青青草97国产精品免费观看| 91精品美女在线| 亚洲五月综合| 精品视频在线观看一区二区| 欧美精品三区| 欧美午夜性色大片在线观看| 人妻少妇精品久久| 国产丝袜在线精品| 欧美日韩一区二区在线观看| 在线观看网站免费入口在线观看国内| 97久久精品人人澡人人爽缅北| 91精品高清| 国产精品专区在线| 亚洲精品伊人| 国产精品美女久久| 日韩高清一级片| 九九热99久久久国产盗摄| 国产一区二区三区朝在线观看| 亚洲自拍偷拍麻豆| 婷婷在线视频| 欧美大尺度激情区在线播放| 中中文字幕av在线| 欧美视频一区二区三区四区 | 日本一区二区视频在线观看| 国产国语**毛片高清视频| 日韩午夜在线播放| 欧美另类69xxxxx| 欧美图片激情小说| 欧美亚洲国产一卡| 日韩电影在线观看完整免费观看| 综合一区中文字幕| 欧美丝袜第一区| 日本国产亚洲| 日韩一区免费观看| 欧洲色大大久久| 亚洲精品国模| 亚洲 自拍 另类小说综合图区| 欧美老年两性高潮| 久久一区二区三区电影| 天天操天天摸天天爽| 中文字幕精品久久| 美女视频网站久久| 久久黄色美女电影| 亚洲一区二区三区777| 最好看的中文字幕久久| 欧美日韩亚洲国产| 在线观看福利一区| 在线成人高清不卡| 欧美三级在线| 深夜福利免费在线观看| 日本欧美爱爱爱| 国产精品国产三级国产aⅴ中文| 福利一区二区免费视频| wwwjizzjizzcom| 亚洲欧美日韩精品久久| 丝袜美腿高跟呻吟高潮一区| 99re热久久这里只有精品34| 99中文字幕| 欧美亚州韩日在线看免费版国语版| 久久久久久久久久久妇女| 人人在线97| 4438全国成人免费| 国产精品美女久久久久久久久 | 久久中文字幕一区| 国产精品久久久久av免费| 久久久成人精品视频| 亚洲女人被黑人巨大进入al| 免费看日本一区二区| 亚洲成色www.777999| 色婷婷av一区二区三区久久| 18视频在线观看| 欧美三级黄网| 久久婷婷五月综合色丁香| 成人在线激情视频| 亚洲国产视频一区| 亚洲黄色录像| 一个人看的免费网站www视频| 国产精品久久久久av| 中文字幕一区二区三区四区不卡 | 亚洲大尺度视频在线观看| 日韩理论电影中文字幕| 色戒在线免费观看| 2018日韩中文字幕| 夜夜嗨av一区二区三区中文字幕| 日韩精品四区| 搞黄视频免费在线观看| 欧美日韩国产精品一卡| 亚洲成人性视频| av高清不卡在线| 蜜臀av一区| 国产女王在线**视频| 91青草视频久久| 日韩视频在线观看一区二区| 免费成人av资源网| 国产精品亲子伦av一区二区三区| 国产精品无码av无码| 日产日韩在线亚洲欧美| 欧美性极品xxxx做受| 性高湖久久久久久久久| 91久久国产综合久久91猫猫| 韩国日本美国免费毛片| 国产精品久久久久久久久久新婚| 欧美亚洲丝袜传媒另类| 捆绑调教一区二区三区| 久久九九精品视频| 草莓污污视频在线观看| 欧美日韩精品不卡| 丝袜亚洲另类欧美重口| 亚洲国产精品黑人久久久| 大色综合视频网站在线播放| 成人18在线| 精品一二三四五区| 国产精品视频男人的天堂| 岛国毛片在线播放| 中文字幕视频在线免费观看| 国产91网红主播在线观看| 久久99九九| 欧美性猛交xxxxxxxx| 美女视频黄频大全不卡视频在线播放| 女子免费在线观看视频www| 人人妻人人澡人人爽欧美一区双| 国内精品小视频| 欧美日韩一区二区不卡| 视频一区二区中文字幕| 欧美大片1688网站| 992tv在线影院| 亚洲精品在线免费| 538国产精品视频一区二区| 3d成人动漫网站| 中文成人av在线| 狂野欧美一区| 亚洲妇女av| 日韩欧美精品一区二区三区| 国产精品视频中文字幕| 欧美不卡在线一区二区三区| 欧美精品制服第一页| 51精品秘密在线观看| 国产精品另类一区| 久久黄色级2电影| 99精品视频在线| 在线成人免费| 4438x成人网全国最大| 国产aa视频|