




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、網(wǎng)絡(luò)與信息安全實(shí)驗(yàn)基于C+的FTP服務(wù)器程序設(shè)計(jì)摘要: 本實(shí)驗(yàn)的目的是設(shè)計(jì)一個(gè)FTP服務(wù)器系統(tǒng),實(shí)現(xiàn)FTP服務(wù)器的大多數(shù)功能,包括用戶的登錄,文件的上傳、下載、刪除、目錄選擇等,并給出相應(yīng)的提示,能夠解釋一般的FTP命令,并且符合RFC959規(guī)范。本程序采用VC+ 6.0作為開發(fā)工具,設(shè)計(jì)采用自頂向下的方法。該系統(tǒng)有著良好的界面,簡(jiǎn)單易用。本實(shí)驗(yàn)的設(shè)計(jì),即從需求分析,軟件設(shè)計(jì)到軟件功能實(shí)現(xiàn),都始終遵循軟件工程的思想和方法。本實(shí)驗(yàn)中采用了大量的圖表說(shuō)明,使文章明確清晰,便與閱讀和理解。 關(guān)鍵詞: FTP服務(wù)器;上傳、下載;自頂向下;1 實(shí)驗(yàn)介紹由于網(wǎng)絡(luò)的帶寬及各種服務(wù)的限制,單純從頁(yè)面上下載顯得
2、又慢又不可靠,所以就有許多FTP1工具被開發(fā)出來(lái)。FTP是一個(gè)客戶機(jī)/服務(wù)器系統(tǒng)。用戶連接到在遠(yuǎn)程主機(jī)上的FTP服務(wù)器程序,發(fā)出命令,服務(wù)器程序執(zhí)行用戶所發(fā)出的命令,并將執(zhí)行的結(jié)果返回到客戶機(jī)。本次程序設(shè)計(jì)的是一個(gè)FTP服務(wù)器。通過(guò)TCP/IP 網(wǎng)絡(luò)應(yīng)用程序基本的設(shè)計(jì)方法和實(shí)現(xiàn)技巧,實(shí)現(xiàn)FTP服務(wù)器所應(yīng)該具備的大多數(shù)功能,并給出相應(yīng)的提示。設(shè)計(jì)采用流行的C+語(yǔ)言作為此次設(shè)計(jì)的開發(fā)語(yǔ)言,并采用C/S網(wǎng)絡(luò)通信結(jié)構(gòu)作為FTP的網(wǎng)絡(luò)體系結(jié)構(gòu);采用Visual C+ 6.0開發(fā)平臺(tái),Socket網(wǎng)絡(luò)編程原理,成功與相應(yīng)的FTP客戶端連接。2 實(shí)驗(yàn)?zāi)康睦斫獠⒉捎肍TP協(xié)議制作一個(gè)簡(jiǎn)易的FTP服務(wù)器:1.
3、具有用戶授權(quán)功能(包括匿名模式);2. 實(shí)現(xiàn)基本的命令(上傳、下載、更改目錄)操作;3. 能夠與目前已有FTP客戶端連通。FTP客戶機(jī)可以給服務(wù)器發(fā)出命令來(lái)下載文件,上載文件,創(chuàng)建或改變服務(wù)器上的目錄。3 實(shí)驗(yàn)原理FTP服務(wù)器的簡(jiǎn)單設(shè)計(jì)與實(shí)現(xiàn)建立在計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)環(huán)境TCP/IP 網(wǎng)絡(luò)體系結(jié)構(gòu)之上,使用Socket 編程接口編寫。Socket 通訊機(jī)制是一種較原始的通訊機(jī)制,通過(guò)Socket的數(shù)據(jù)表現(xiàn)出來(lái)的形式是原始字節(jié)流信息,通訊雙方只要在此基礎(chǔ)上按照雙方約定方式進(jìn)行數(shù)據(jù)的格式化和解析處理工作,這樣才能完成具體的應(yīng)用,即實(shí)現(xiàn)某種協(xié)議的過(guò)程2。圖3-1是Socket的工作原理圖。圖3-1 Soc
4、ket原理圖客戶機(jī)程序發(fā)送請(qǐng)求給服務(wù)器程序,服務(wù)器進(jìn)程對(duì)客戶機(jī)的請(qǐng)求做出響應(yīng),并產(chǎn)生結(jié)果??蛻魴C(jī)/服務(wù)器模式下,客戶機(jī)為主動(dòng)方,即請(qǐng)求方;而服務(wù)器為被動(dòng)方,即接受請(qǐng)求方。FTP服務(wù)如下圖所示。圖3-2 FTP服務(wù)示意圖在數(shù)據(jù)處理領(lǐng)域中,客戶機(jī)/服務(wù)器體系結(jié)構(gòu)受到極關(guān)注,C/S已經(jīng)成為網(wǎng)絡(luò)計(jì)算機(jī)的主要方式。其中基于TCP/IP的網(wǎng)絡(luò)通信主要模式也是客戶機(jī)/服務(wù)器方式。C/S結(jié)構(gòu)是軟件系統(tǒng)體系結(jié)構(gòu),通過(guò)它可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到Client端和Server端來(lái)實(shí)現(xiàn),降低了系統(tǒng)的通訊開銷。其最重要的特征是:是一個(gè)平等的環(huán)境,客戶機(jī)和服務(wù)器的地位可以互換。所以客戶機(jī)/服務(wù)器體系
5、結(jié)構(gòu)應(yīng)是應(yīng)用程序之間相互作用的一種模型3。4 實(shí)驗(yàn)步驟4.1圖4-1所示系統(tǒng)流程圖。圖4-1 系統(tǒng)流程圖4.2 主要的功能與實(shí)現(xiàn)用CSocket類編制的服務(wù)器端的程序,其過(guò)程如下,其過(guò)程主要是:(1) 創(chuàng)建CSocket對(duì)象。(2) 創(chuàng)建底層套接字Socket。 (3) 調(diào)用Listen,開始監(jiān)聽從客戶端發(fā)來(lái)的訪問(wèn)請(qǐng)求。 (4) 如果收到請(qǐng)求,調(diào)用CAsyncSocket:Accept( )函數(shù)進(jìn)行接收外理4。 (5) 建立CSocketFile對(duì)象,并且使該對(duì)象與CSocket對(duì)象具備一定的聯(lián)系。建立Carchive對(duì)象,以便實(shí)現(xiàn)卸裝(接收)數(shù)據(jù)和存儲(chǔ)(發(fā)送)數(shù)據(jù)的目的地址。注意:該Carc
6、hive對(duì)象應(yīng)該與前面的CSocketFile對(duì)象建立聯(lián)系。 (6)使用Carchive對(duì)象在客戶機(jī)和服務(wù)器Socket之間傳遞數(shù)據(jù),從而實(shí)現(xiàn)服務(wù)器Socket和客戶機(jī)Socket之間的通信。值得注意的是,一個(gè)給定的Carchive對(duì)象只能在單一的方向上傳遞數(shù)據(jù):或者接收,或者發(fā)送。4.3程序界面程序界面主要包括服務(wù)器日志、在線用戶、統(tǒng)計(jì)信息、安全管理、菜單欄、工具欄、狀態(tài)欄。如圖4-2所示。圖4-2 服務(wù)器用戶界面4.3.1菜單欄功能模塊菜單攔包括:服務(wù)器,查看。服務(wù)器菜單包括:開始,停止,用戶賬戶向?qū)В脩糍~戶等功能。查看菜單包括:服務(wù)器日志,在線用戶,配置,統(tǒng)計(jì),安全等功能。各項(xiàng)功能實(shí)現(xiàn)
7、如下:服務(wù)器功能: 1. 用戶向?qū)В寒?dāng)用戶登錄服務(wù)器時(shí)需要?jiǎng)?chuàng)建一個(gè)有效的賬戶,用戶帳戶向?qū)⒁龑?dǎo)此用戶通過(guò)必要的步驟,創(chuàng)造一個(gè)新的用戶帳戶。并將其添加到用戶帳戶對(duì)話框,創(chuàng)建用戶名,如圖4-3所示。圖4-3 用戶帳戶向?qū)Т翱谕ㄟ^(guò)這個(gè)窗口可以創(chuàng)建用戶的用戶名以及用以登陸FTP服務(wù)器的相應(yīng)密碼,該部分功能實(shí)現(xiàn)代碼如下:CWizardPage1:CWizardPage1() : CPropertyPageEx(CWizardPage1:IDD, 0, IDS_HEADERTITLE1, NULL)m_strAccountName = _T(“);m_psp.dwFlags &= PSP_HAS
8、HELP; CWizardPage1:CWizardPage1()void CWizardPage1:DoDataExchange(CDataExchange* pDX)CPropertyPageEx:DoDataExchange(pDX);DDX_Text(pDX, IDC_ACCOUNTNAME, m_strAccountName);BEGIN_MESSAGE_MAP(CWizardPage1, CPropertyPageEx)END_MESSAGE_MAP()2. 用戶帳戶功能:這一功能主要是服務(wù)器端添加,修改和刪除用戶帳戶,設(shè)置目錄權(quán)限(使用添加按鈕以添加一個(gè)新目錄,其中選定的用戶帳戶
9、已具有訪問(wèn)權(quán)限,每小組目錄可以設(shè)定不同的權(quán)限,例如你可以給所有權(quán)限到“C:下載”,但限制的權(quán)限為“C: 下載申請(qǐng)”時(shí),沒(méi)有權(quán)限指定的目錄,在這個(gè)目錄中它會(huì)自動(dòng)阻止用戶要求上傳的任何子目錄)。目錄屬性5,當(dāng)您添加的編輯目錄的用戶帳戶,目錄屬性對(duì)話框?qū)@示物理目錄(物理目錄是“真正”的路徑文件夾的名稱),虛擬目錄。 設(shè)置服務(wù)端允許客戶端的權(quán)限,例如允許客戶端可以下載,上傳,重命名哪些服務(wù)器端的文件內(nèi)容。例如用戶toldo將:“C:temp”設(shè)為許可目錄,客戶端就可以隨時(shí)下載,上傳“C:temp”盤里面的內(nèi)容,如圖4-4所示。圖4-4 用戶帳戶窗口這一功能實(shí)現(xiàn),代碼如下void CUserAccou
10、ntsDlg:OnDblclkDirlist(NMHDR* pNMHDR, LRESULT* pResult) OnEditDir();*pResult = 0;4.3.2查看功能模塊服務(wù)器日志模塊的功能:在此屏幕中,我們可以看到FTP服務(wù)器所記錄的客戶端與服務(wù)器端的連接信息以及傳輸信息,當(dāng)客戶端登陸服務(wù)器時(shí)服務(wù)器日志會(huì)顯示是否與服務(wù)器連接成功,當(dāng)客戶端要上傳文件或是下載文件成功時(shí)會(huì)記錄服務(wù)器和FTP客戶端的詳細(xì)資料,從而有助于用戶追蹤服務(wù)器與客戶端之間所有的通訊訊息,數(shù)目之間的方括號(hào) 是線程ID,如圖4-5所示。圖4-5 服務(wù)器日志窗口該部分功能實(shí)現(xiàn)代碼如下:friend CLogFile&
11、amp; setlevel(CLogFile& os, int level) m_nCurrentLevel = level; return os; friend CLogFile& error_lvl(CLogFile& os) os.m_nCurrentLevel = 1;return os;在線用戶模塊的功能:通過(guò)服務(wù)器來(lái)查看在線客戶端的用戶名,用戶IP地址,用戶登陸時(shí)間等信息,如圖4-6所示。圖4-6 在線用戶窗口 該模塊功能實(shí)現(xiàn)代碼如下:class COnlineUsersPage : public CDialogDECLARE_DYNCREATE(COnli
12、neUsersPage)public:void RemoveUser(DWORD nThreadID);void AddUser(DWORD nThreadID, LPCTSTR lpszName, LPCTSTR lpszAddress);COnlineUsersPage();COnlineUsersPage();enum IDD = IDD_PROPPAGE_ONLINE ;CListCtrlm_OnlineUsers;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV supportprotected:
13、afx_msg void OnSize(UINT nType, int cx, int cy);virtual BOOL OnInitDialog();配置模塊的功能:配置FTP服務(wù)器所有的設(shè)置。默認(rèn)服務(wù)器端口為21,可以同時(shí)連接最多用戶數(shù),客戶端與服務(wù)器端連接時(shí)間,歡迎信息,再見(jiàn)信息其他設(shè)置。FTP服務(wù)器在Windows下啟動(dòng),啟動(dòng)最小化在系統(tǒng)盤,并在啟動(dòng)時(shí)自動(dòng)激活服務(wù)器。用戶還可以將用戶各種信息都記錄在服務(wù)器日志里,如圖4-7所示。 圖4-7 配置界面5 結(jié)果分析在編寫程序時(shí)有時(shí)會(huì)遇到運(yùn)行錯(cuò)誤,這是由于代碼編寫錯(cuò)誤造成的。只要根據(jù)相應(yīng)的錯(cuò)誤提示對(duì)代碼做出相應(yīng)的修改即可。用客戶端登錄服務(wù)器,
14、與服務(wù)器建立連接,實(shí)現(xiàn)文件的上傳與下載等相應(yīng)功能,并查看服務(wù)器端所做出的反應(yīng)??蛻舳诉B接服務(wù)器時(shí),需要輸入用效的用戶名、密碼以及服務(wù)器IP,才可以與服務(wù)器建立連接。打開客戶端,輸入服務(wù)器地址,端口號(hào),用戶名以及密碼即可成功連接服務(wù)器,顯示登錄成功。如圖5-2 圖5-2 客戶端連接 用戶登錄成功后,客戶端6將會(huì)顯示與服務(wù)器連接成功的信息,表示用戶可以上傳和下載文件了。連接成功后,雙擊選擇相應(yīng)的文件彈出對(duì)話框,點(diǎn)擊確定,即可完成上傳、下載等相應(yīng)功能。此時(shí)服務(wù)端作出反應(yīng),顯示在線用戶及服務(wù)日志。如圖5-3所示圖5-3 服務(wù)器端顯示連接成功6 結(jié)論本次程序設(shè)計(jì)的是一個(gè)FTP服務(wù)器。通過(guò)TCP/IP 網(wǎng)
15、絡(luò)應(yīng)用程序基本的設(shè)計(jì)方法和實(shí)現(xiàn)技巧,實(shí)現(xiàn)了FTP服務(wù)器所應(yīng)該具備的大多數(shù)功能,包括用戶的登錄,文件的上傳7、下載、選擇數(shù)據(jù)傳輸模式、目錄選擇等,并給出相應(yīng)的提示。通過(guò)該程序的開發(fā),基本上實(shí)現(xiàn)了一個(gè)FTP服務(wù)器所應(yīng)該具有的功能,能夠解釋一般的FTP命令,并且符合RFC959規(guī)范。設(shè)計(jì)采用流行的C+語(yǔ)言作為此次設(shè)計(jì)的開發(fā)語(yǔ)言,并采用C/S結(jié)構(gòu)作為FTP的網(wǎng)絡(luò)體系結(jié)構(gòu)。采用Visual C+8 9 6.0開發(fā)平臺(tái),C/S的網(wǎng)絡(luò)通信模式及Socket網(wǎng)絡(luò)編程原理。能成功與相應(yīng)的FTP客戶端連接,達(dá)到預(yù)期目的。目前FTP服務(wù)器還需增強(qiáng)的部分為:加快FTP服務(wù)器與相應(yīng)客戶端的連接速度;增強(qiáng)服務(wù)器與客戶端數(shù)
16、據(jù)連接時(shí)傳輸?shù)姆€(wěn)定性,使使用者獲得更加快捷方便的用戶體驗(yàn)10。此次課程設(shè)計(jì)我搜索了很多的資料,學(xué)習(xí)到了很多新的內(nèi)容;也讓我懂得在以后的學(xué)習(xí)中要勤于思考,多多動(dòng)手,更加認(rèn)真耐心地解決學(xué)習(xí)中的問(wèn)題。參考文獻(xiàn)1 J.Reynolds.Request for Comments:959:File Transfer Protocol,October 1985:7-8.2 Allman M,Ostermann S,C Metz.FTP Extensions for IPv6 and NA TsJ.RFC, 1998(9):24-28.3 Robert E Gilligam,Svan Thowson,Jim
17、Bownd,et al.Basic socket in terface extansiows for ZPV6J.RFC,1999: 25-53.4 任泰明.TCP/IP協(xié)議與網(wǎng)絡(luò)編程M.西安:西安電子科技大學(xué)出版社, 2004.5 Douglas E.Comer,David L.Stevens.TCP/IP網(wǎng)絡(luò)互聯(lián)技術(shù)(卷3)M,北京:清華大學(xué)出版社,2004.6 劉遠(yuǎn)生.計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)M,北京:電子工業(yè)出版社,2001,9:203-204.7 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)(第4版)M,北京:電子工業(yè)出版社,2003.8 史斌.C語(yǔ)言貫通教程M,北京:清華大學(xué)出版社,2001.9 戴鋒.Visual
18、C+程序設(shè)計(jì)基礎(chǔ)M,北京:清華大學(xué)出版社,2001.10 張力.Visual C+高級(jí)編程M,北京:人民郵電出版社,2002程序部分實(shí)現(xiàn)代碼:#include "stdafx.h"#include "FTPServerApp.h"#include "FTPServer.h"#include "ApplicationDlg.h"#include "ListenSocket.h"#include "ConnectThread.h"#ifdef _DEBUG#define new
19、DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endifCListenSocket:CListenSocket()m_pWndServer = NULL;CListenSocket:CListenSocket()/ 不要編輯以下行,ClassWizard必需的#if 0BEGIN_MESSAGE_MAP(CListenSocket, CAsyncSocket)/AFX_MSG_MAP(CListenSocket)/AFX_MSG_MAPEND_MESSAGE_MAP()#endif/ 0/*/*/* Function name
20、 : OnAccept*/* Description : 調(diào)用框架來(lái)通知監(jiān)聽, */* 它可以通過(guò)調(diào)用接受成員函數(shù)接受等待連接請(qǐng)求. */*/*/void CListenSocket:OnAccept(int nErrorCode) / 正在建立新連接CSocket sockit;/ 接受連接使用一個(gè)臨時(shí)CSocket對(duì)象Accept(sockit);/ 創(chuàng)建一個(gè)線程來(lái)處理連接。線程被創(chuàng)建的停賽,所以我們可以在CConnectThread之前開始執(zhí)行設(shè)置變量CConnectThread* pThread = (CConnectThread*)AfxBeginThread(RUNTIME_CLA
21、SS(CConnectThread), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);if (!pThread)sockit.Close();TRACE("Could not create threadn");return;CFTPServer *pWnd = (CFTPServer *)m_pWndServer; / 因?yàn)橐磺卸际浅晒Φ?添加線程pWnd->m_CriticalSection.Lock(); pWnd->m_ThreadList.AddTail(pThread);pWnd->m_Critical
22、Section.Unlock();/ 保存指針pThread->m_pWndServer = m_pWndServer;/ 通過(guò)套接字到線程通過(guò)套接字處理。你不能通過(guò)CSocket跨線程對(duì)象。pThread->m_hSocket = sockit.Detach();/ 現(xiàn)在啟動(dòng)線程。pThread->ResumeThread();CAsyncSocket:OnAccept(nErrorCode);#include "stdafx.h"#include "FTPServer.h"CFTPServer:CFTPServer()m_nPort
23、 = 21;m_nMaxUsers = 10;m_strWelcomeMessage = "Welcome to my FTP Server"m_strGoodbyeMessage = "Bye"m_nTimeout = 5;m_bRunning = FALSE;m_hWnd = NULL;m_nConnectionCount = 0;/ intialize statisticsm_dwTotalSentBytes = 0;m_dwTotalReceivedBytes = 0;m_nTotalConnections = 0;m_nFilesDownloa
24、ded = 0;m_nFilesUploaded = 0;m_nFailedDownloads = 0;m_nFailedUploads = 0;m_nSecurityMode = 0;m_nStatisticsInterval = 0;/ load usersm_UserManager.Serialize(FALSE);/ load securitym_SecurityManager.Serialize(FALSE);CFTPServer:CFTPServer()Stop();BEGIN_MESSAGE_MAP(CFTPServer, CWnd)/AFX_MSG_MAP(CFTPServer
25、)ON_WM_TIMER()/AFX_MSG_MAPON_MESSAGE(WM_THREADSTART, OnThreadStart)ON_MESSAGE(WM_THREADCLOSE, OnThreadClose)ON_MESSAGE(WM_THREADMSG, OnThreadMessage)END_MESSAGE_MAP()/*/*/* Function name : Start*/* Description : 開始監(jiān)聽端口21并接受新的連接 */* */*/*/BOOL CFTPServer:Start()if (m_bRunning)return FALSE;/為消息路由創(chuàng)建虛擬窗
26、口 if (!CWnd:CreateEx(0, AfxRegisterWndClass(0), "FTP Server Notification Sink", WS_POPUP, 0,0,0,0, NULL, 0)AddTraceLine(0, "Failed to create notification window.");return FALSE;/ 創(chuàng)建監(jiān)聽socketif (m_ListenSocket.Create(m_nPort)/開始監(jiān)聽if (m_ListenSocket.Listen()m_ListenSocket.m_pWndServ
27、er = this;m_bRunning = TRUE;SetTimer(1, m_nStatisticsInterval, NULL);AddTraceLine(0, "FTP Server started on port %d.", m_nPort);return TRUE;AddTraceLine(0, "FTP Server failed to listen on port %d.", m_nPort);/ destroy notification windowif (IsWindow(m_hWnd)DestroyWindow();m_hWnd
28、= NULL;return FALSE;/*/*/* Function name : Stop*/* Description : 停止FTP服務(wù)器。*/*/*/void CFTPServer:Stop()if (!m_bRunning)return;/ 停止統(tǒng)計(jì)定時(shí)器KillTimer(1);m_bRunning = FALSE;m_ListenSocket.Close();CConnectThread* pThread = NULL;/ 關(guān)閉所有正在運(yùn)行的線程dom_CriticalSection.Lock();POSITION pos = m_ThreadList.GetHeadPosit
29、ion();if (pos != NULL)pThread = (CConnectThread *)m_ThreadList.GetAt(pos);m_CriticalSection.Unlock();/ 保存線程成員int nThreadID = pThread->m_nThreadID;HANDLE hThread = pThread->m_hThread;AddTraceLine(0, "%d Shutting down thread.", nThreadID);/ 通知線程停止pThread->SetThreadPriority(THREAD_PR
30、IORITY_HIGHEST);pThread->PostThreadMessage(WM_QUIT,0,0);/ 等待線程結(jié)束,同時(shí)保持消息泵(最大5秒)if (WaitWithMessageLoop(hThread, 5000) = FALSE)/ 線程不想停止AddTraceLine(0, "%d Problem while killing thread.", nThreadID);/ 不再試一次,所以刪除m_CriticalSection.Lock();POSITION rmPos = m_ThreadList.Find(pThread);if (rmPos
31、!= NULL)m_ThreadList.RemoveAt(rmPos);m_CriticalSection.Unlock();elseAddTraceLine(0, "%d Thread successfully stopped.", nThreadID);elsem_CriticalSection.Unlock();pThread = NULL;while (pThread != NULL);AddTraceLine(0, "FTP Server stopped.");if (IsWindow(m_hWnd)DestroyWindow();m_hWn
32、d = NULL;/*/*/* Function name : IsActive*/* Description : FTP服務(wù)器是否啟動(dòng)? */*/*/BOOL CFTPServer:IsActive()return m_bRunning;/*/*/* Function name : SetMaxUsers*/* Description : 設(shè)置用戶的最大數(shù)量 */*/*/void CFTPServer:SetMaxUsers(int nValue)m_nMaxUsers = nValue;/*/*/* Function name : SetPort*/* Description : 設(shè)置監(jiān)聽
33、端口為新連接 */*/*/void CFTPServer:SetPort(int nValue)m_nPort = nValue;/*/*/* Function name : SetTimeout*/* Description : 設(shè)置連接時(shí)限 */*/*/void CFTPServer:SetTimeout(int nValue)m_nTimeout = nValue;/*/*/* Function name : SetTimeout*/* Description : 設(shè)置連接時(shí)限 */*/*/void CFTPServer:SetStatisticsInterval(int nValue)m_nStatisticsInterval = nValue;if (m_nStatisticsInterval != 0)KillTimer(1);SetTimer(1, nValue, NULL);elseKillTimer(1);/*/*/* Function name : SetWelcomeMessage*/* Descriptio
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 模擬應(yīng)聘面試題及答案
- 2025年音樂(lè)理論與實(shí)踐考試試題及答案
- 西方國(guó)家的社會(huì)公正理念探討試題及答案
- 2025年統(tǒng)計(jì)學(xué)基礎(chǔ)知識(shí)考試題及答案
- 嚇人測(cè)試題及答案
- 2025年翻譯學(xué)專業(yè)考試題及答案
- 優(yōu)衣庫(kù)招聘面試題及答案
- 規(guī)劃中心面試題及答案
- 寶鋼財(cái)務(wù)面試題及答案
- 汽車電子技術(shù)模擬試題
- 無(wú)創(chuàng)機(jī)械通氣護(hù)理要點(diǎn)
- TCCAATB0045-2023城市航站樓服務(wù)規(guī)范
- 七下道法【選擇題】專練50題
- 2024年北京第二次高中學(xué)業(yè)水平合格信息技術(shù)試卷試(含答案詳解)
- 職業(yè)壓力管理學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 人力資源管理:基于創(chuàng)新創(chuàng)業(yè)視角學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 安全環(huán)保職業(yè)健康法律法規(guī)清單2024年
- 基于杜邦分析法的蔚來(lái)汽車經(jīng)營(yíng)財(cái)務(wù)分析及建議
- 職業(yè)教育專業(yè)教學(xué)資源庫(kù)建設(shè)工作方案和技術(shù)要求
- 江蘇省徐州市2023-2024學(xué)年七年級(jí)下學(xué)期期末英語(yǔ)試卷(含答案解析)
- 2024年西藏初中學(xué)業(yè)水平考試生物試題(原卷版)
評(píng)論
0/150
提交評(píng)論