當前位置:首頁 » 課程大全 » linuxftp課程設計

linuxftp課程設計

發布時間: 2021-02-13 03:32:10

課程設計求助,基於FTP協議的文件傳輸系統設計與實現(C/S架構),求所有源代碼。。。

搜下類似的不這個應該會有相應的源碼好運 開發系統集合

⑵ 課程設計求解——題 目:TcpDump軟體解析FTP協議

排版你,弄好

⑶ 基於linux的小型遠程FTP服務系統的設計

太多了 沒時間看 得工作 時間不允許 哥們還是自己寫吧

⑷ ftp伺服器 課程設計

這個通過java可以實現,具體需求你發下我郵箱吧[email protected]
java語言:
public class FtpTest {

private FTPClient ftpClient;

/**
* 鏈接ftp
* @param ip 地址
* @param port 埠號
* @param user 用戶名
* @param password 密碼
* @param path 路徑
*/
public void connectServer(String ip,int port,String user,String password,String path) {
try {
this.ftpClient = new FTPClient();
FTPClientConfig config = new FTPClientConfig(FTPClientConfig.SYST_NT);//適用的系統
config.setServerTimeZoneId(TimeZone.getDefault().getID());//獲取主機默認時區
this.ftpClient.setControlEncoding("GBK");
this.ftpClient.configure(config);
this.ftpClient.connect(ip, port);
int reply = this.ftpClient.getReplyCode();
//ftp伺服器鏈接響應,已2開頭通過
if(!FTPReply.isPositiveCompletion(reply)) {
//響應異常斷開連接
System.out.println("鏈接失敗!");
this.ftpClient.disconnect();
}
this.ftpClient.login(user, password);
this.ftpClient.changeWorkingDirectory(path);
this.ftpClient.setFileType(FTPClient.FILE_STRUCTURE);//設置文件傳輸類型
System.out.println("登陸成功,當前所在目錄:"+this.ftpClient.printWorkingDirectory());
} catch (SocketException e) {
System.out.println("鏈接FTP伺服器失敗!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("登陸FTP伺服器失敗!");
e.printStackTrace();
}
}

其他更多的你發我郵箱里,我看看需求

⑸ Linux課程設計實施方案

; boot.asm: ANOS fat12 軟盤啟動代碼
; Larry Li, 2005.2.25
; 2005.3.19
; 整理注釋

PosBuf equ 0700h
StackTop equ 07BF0h
BootStart equ 07C00h
;下面是內核的載入地址
SegKernel equ 0100h

RootBufEnd equ 02h
DataStart equ 04h
CursorPos equ 10h

; BOOT 會被 BIOS 載入到 00007C00h 處
org 7C00h

; 代碼段
segment .text
; 16 位代碼
bits 16

; start: 首先是跳過必須的 FAT 信息表執行後面的程序
Start:
jmp short Main
; 補一個位元組的空指令
nop

; FAT12 信息
; 只是文件系統的描述信息
OEMName db 'ANOSDISK'
; 扇區大小(位元組),應為 512
BytesPerSector dw 512
; 簇的扇區數,應為 2 的冪,FAT12 為 1
SectsPerCluster db 1
; 保留扇區,FAT12/16 應為 1
ReservedSectors dw 1
; FAT 結構數目,一般為 2
NumberOfFats db 2
; 根目錄項目數,FAT12 為 224
MaxRootEntries dw 224
; 扇區總數,1.44M 軟盤為 2880
TotalSectors dw 2880
; 設備類型,1.44M 軟盤為 F0h
MediaDescriptor db 0f0h
; FAT 佔用扇區數,9
SectorsPerFat dw 9
; 磁軌扇區數,18
SectorsPerTrack dw 18
; 磁頭數,2
NumberOfHeads dw 2
; 隱藏扇區,默認為 0
HiddenSectors dd 0
; FAT32 使用,0
TotalSectorsBig dd 0
;; 下面的內容為 FAT12/16 所有,和 FAT32 不同
; MS-DOS 使用,0
BootDrive db 0
; Windows NT 使用,0
Reserved db 0
; 附加的可啟動標志,29h
ExtendSig db 029h
; 卷標序列號,00000000h
SerialNumber dd 00000000h
; 卷標,11 位元組,必須用空格( 20h )補齊
VolumeLabel db 'ANOS FLOPPY'
; 文件系統標志,
FileSystem db 'FAT12 '

; Main: BOOT 主程序
Main:
; 初始化運行環境
xor ax,ax
mov ss,ax
mov bp,BootStart
mov sp,StackTop
push ss
pop ds

; LoadRootDirSector: 讀取 FAT12 根目錄項目扇區
LoadRootDirSector:
push ss
pop es

; 計算 ROOT 啟始邏輯扇區
mov al,[BYTE bp+NumberOfFats]
; FAT 表數目
mul WORD [BYTE bp+SectorsPerFat]
; 乘上一個 FAT 表佔用的扇區數
add ax,WORD [BYTE bp+HiddenSectors]
; 加上隱藏的扇區數
add ax,WORD [BYTE bp+ReservedSectors]
; 加上保留的扇區數
push ax
mov WORD [BYTE bp-DataStart],ax
; AX ROOT 項目的啟始邏輯扇區, 保存

; 計算 ROOT 扇區數
mov ax,20h
mov cx,WORD [BYTE bp+MaxRootEntries]
mul cx
mov bx,WORD [BYTE bp+BytesPerSector]
add ax,bx
dec ax
div bx
mov cx,ax
; CX ROOT 扇區大小
add WORD [BYTE bp-DataStart],ax
; 更新數據區啟始邏輯扇區
mul bx
; AX ROOT 總扇區位元組大小
mov bx,PosBuf
; BX 緩存啟始地址
add ax,bx
; AX 緩存尾地址
mov WORD [BYTE bp-RootBufEnd],ax
; 保存尾地址

pop ax
; 取出 ROOT 項目啟始邏輯扇區
call ReadSectors
mov si,bx
; [ES:SI] 根目錄內容

; SearchRootDirSector: 在根目錄項目中搜索內核文件
SearchRootDirSector:
; [ES:SI] 為當前目錄項
; 其頭 11 個位元組為文件名稱
cmp [es:di],ch
; 如果目錄項的第一個位元組是0,這就是最後一個目錄項
jz NotFound
push si
; 保存 SI rep cmpsb 時 SI 會改變
mov cx,11
; 比較前 11 個位元組
mov di,FileName
; [DS:DI] 要載入的內核名稱
rep cmpsb
; 比較 [ES:SI] [DS:DI]
pop si
; 恢復 [ES:SI] 為當前查對的目錄項
je FoundKernel
add si,32
; [ES:SI] 指向下一個目錄項
; 每個目錄項 32 位元組
cmp si,WORD [BYTE bp-RootBufEnd]
; 是否到根目錄項目尾
jb SearchRootDirSector

; NotFound: 沒有發現內核的處理
NotFound:
mov si,msgNotFound
call PutChars
jmp ReBoot

; FoundKernel: 發現內核後處理
FoundKernel:
; [ES:SI] 內核文件目錄項
mov ax,[si+01ah]
push ax
; 內核文件啟始簇(低)地址
; 目錄項偏移 26(1ah) 為文件項目啟始簇低地址
; 偏移 20(14h) 為高地址
; 由 FAT12 只是 12 位簇地址, 低地址 16 位足以

xor dx,dx
mov es,dx
mov ax,WORD [BYTE bp+ReservedSectors]
; DX:AX 第一個 FAT 表的啟始邏輯扇區
mov bx,PosBuf
; [ES:BX] 讀盤緩存
mov cx,WORD [BYTE bp+SectorsPerFat]
; CX FAT 表扇區數
call ReadSectors

pusha
mov si,msgLoadKernel
call PutChars
popa

mov ax,SegKernel
mov es,ax
xor bx,bx
; [ES:BX] 讀盤緩存, 內核載入地址

pop ax
push ax
; 文件的第一個簇

; LoadKernel: 載入內核
LoadKernel:
; AX 當前簇
call ReadCluster
pop ax
; 取當前簇
add bx,0200h
; [ES:BX] 緩存地址增加 512 位元組(1 個扇區)
; 下面開始查 FAT12 表項目
; 所以對於簇 n 其項目位於 n / 2 * 3 處
; n / 2 * 3 = n / 2 + n
; n 為偶, 在低 12 位
; n 為奇, 在高 12 位
mov di,ax
; BP DI 文件簇 n
shr di,01h
; DI n / 2
pushf
; 保存標志位, 供以後奇偶處理
add di,ax
; DI n / 2 + n
add di,PosBuf
; DI 加上 FAT12 表的啟始地址
mov ax,[di]
; AX 一個 FAT12 組, 兩個簇號
popf
; 根據 n / 2 奇偶判定
jc ShiftRight4
and ax,0fffh
; 取低 12 位
jmp IsTheEnd
ShiftRight4:
mov cl,4
shr ax,cl
; 高 12 位, 所以右移 4 位
IsTheEnd:
cmp ax,0ff8h
; 比較, ff8h - fffh 表示簇鏈末尾
jae ExecKernel
; 載入完畢, 跳轉到內核地址
push ax
; 復制下一簇號
jmp LoadKernel

; ExecKernel: 運行內核
ExecKernel:
pusha
mov si,msgLoadKernelOK
call PutChars
popa

mov ah,3
xor bh,bh
int 10h
mov WORD [BYTE bp-CursorPos],dx
; 將當前游標位置寫入 7df0h 7df1h
;
push word SegKernel
push word 00h
; 入棧供返回指令跳轉
retf

; BadDisk: 顯示錯誤啟動信息,然後重啟
BadDisk:
mov si,msgDiskError
call PutChars
; ReBoot: 重啟
ReBoot:
mov si,msgAnyKey
call PutChars
xor ax,ax
int 16h
; 等待鍵盤按鍵
int 19h
; 重啟

; ReadCluster: 讀磁碟文件簇
; 讀數據簇 AX 到 [ES:BX]
; CarryFlag == 1 錯誤
ReadCluster:
; 顯示一個 .
push ax
mov ax,0e2eh
int 10h
pop ax

dec ax
dec ax
; 修正, 簇號 - 2
add ax, WORD [BYTE bp-DataStart]
; AX 數據的啟始邏輯扇區
xor dx,dx
mov cx,01h

; ReadSectors: 讀磁碟扇區
; 讀 CX 個邏輯扇區(地址 DX:AX)到 [ES:BX]
; CarryFlag == 1 錯誤
ReadSectors:
pusha
push cx ; 保存讀取扇區數
; 首先要將 DX:AX 邏輯扇區號轉換為[驅動器號][磁頭號][磁軌號][扇區號]
; 根據:磁碟總扇區 = 磁軌數 * 磁頭數 * 扇區數
; 邏輯扇區 = (磁軌號 * 磁頭數 + 磁頭號) * 扇區數 + 扇區號 - 1
; (注意:實際在磁軌的扇區號是從 1 開始計數的,其他號從 0 開始)
; 那麼:扇區號 = 邏輯扇區 % 磁軌的扇區數 + 1
; 同樣:含磁頭計算的磁軌號 = 邏輯扇區 / 磁軌的扇區數
; 除掉磁頭數,就是:磁軌號 = 含磁頭計算的磁軌號 / 磁頭數
; 所以:磁頭號 = 含磁頭計算的磁軌號 % 磁頭數
xchg ax,cx ; AX <=> CX
xchg ax,dx ; AX <=> DX
; AX:CX 邏輯扇區
xor dx,dx ; DX 清零
div WORD [BYTE bp+SectorsPerTrack] ; 除高位
; 計算得含磁頭計算的磁軌號的高位
xchg ax,cx ; 臨時保存到 CX
; 此時余數 DX 與 AX 組成新數繼續低位除
div WORD [BYTE bp+SectorsPerTrack] ; 除低位
; 余數 DX 為 0 開的扇區號
inc dx ; 修正為 1 開
xchg cx,dx ; CX <=> DX
; CX 為扇區號
; DX:AX 為含磁頭計算的磁軌號
div WORD [BYTE bp+NumberOfHeads] ; 繼續除
; AX 為磁軌號
; DX(DL) 為磁頭號
mov dh,dl
; DH 磁頭號
mov dl,[BYTE bp+BootDrive]
; DL 驅動器號
mov ch,al
; CX bit 8-15(CH) 磁軌低 8 位
ror ah,2
; CX bit 6-7(AH bit 6-7) 磁軌高 2 位
or cl,ah
; CX bit 0-5 扇區
pop ax
; AL 操作扇區數目
mov ah,02h
; AH 02h 讀磁碟扇區
int 13h
; BIOS 13h 調用
; int 13h BIOS 功能
; 參數
; AH = 0x02 讀磁碟扇區到內存
; AL 需要讀出的扇區數量
; CH 磁軌(柱面)號的低 8 位
; CL 開始扇區(0-5位),磁軌號高 2 位(6-7)
; DH 磁頭號
; DL 驅動器號
; ES:BX 指向數據緩存
; 返回
; 出錯置 CF 標志位
; AH 狀態 = 0x01
; AL 讀取的扇區數
jc BadDisk

popa
ret

; PutChars: 列印字元串
; 入口參數 si
PutChars:
lodsb
or al,al
jz short Done
mov ah,0eh
mov bx,07h
int 10h
jmp short PutChars
Done:
retn

TheEnd:
db 0

msgLoadKernel db 'Loading ANOS',0
msgLoadKernelOK db 'OK!',0Dh,0Ah,0
msgNotFound db 'Cannot found ANOS kernel!',0Dh,0Ah,0
msgDiskError db 'Disk Error!',0Dh,0Ah,0
msgAnyKey db 'Press any key to reboot...',0Dh,0Ah,0

; 將 BOOT 映象對齊到 512 個位元組
times 496-($-$$) db 0

FileName db 'ANOS SYS',0,0

BootPartition:
db 0

; 啟動標志
BootSignature dw 0AA55h ; BootSector signature

⑹ ftp客戶端的設計與實現,課程設計的題目,應該從何入手,有哪些可以參考的資料書

wftp,是一個純java寫的,界面使用swt,在google上有源代碼和程內序
地址容: http://code.google.com/p/wftp/downloads/list

⑺ linux實現ftp共享

修改vsftpd.conf 中的參數

一、上傳後不允許修改。
#本地用戶上傳文件的umask(記住寫4位數,以0開頭,關鍵是第二位的2,意思是不允許上傳後再有寫操作。如果不希望用戶重新下載自己上傳的文件還可以是6和7)
local_umask=0222

二、不允許匿名登錄,只允許本地用戶登錄。
#不接受匿名用戶
anonymous_enable=NO
#接受本地用戶
local_enable=YES
#本地用戶主目錄
local_root=/home/ftp
#不允許本地用戶登錄其他目錄
chroot_local_user=YES

三、磁碟配額。
修改linux配置文件(太復雜了,我偷懶一下,自己看下面網頁相關內容,請見諒).

以下內容來自http://www.chinabyte.com/biz/cbfwq/117/2653117.shtml
============================

為FTP增加磁碟配額,從而避免惡意用戶用垃圾數據塞滿你的硬碟

我首先要說的是這個功能是系統自帶的,而不是vsftp 的功能之一,千萬別搞混了。好了,我們先假設我們的系統用戶ftpd的主目錄是/home/ftpd,它是建立在/home分區中,那麼如果我們要對 ftpd用戶進行磁碟限額,那我們需要修改/etc/fstab中根分區的記錄,將/home分區的第4個欄位改成defaults,usrquota,如下:

LABEL=/home /home ext3 defaults,usrquota 1 2

# reboot //重新啟動系統使設置生效

也可以用

# mount -o remount /dev/sda6 ///dev/sda6的掛接點就是/home,這樣可以不用啟動系統。

這里我還要說明一下,如果我們對一個組進行磁配額,那我們需要增加參數grpquota,例如

LABEL=/home /home ext3 defaults,grpquota 1 2

也可以

LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2

你想怎麼限制都可以,自己組合參數吧。

# quotacheck -avu

說明:a-自動開啟掛載文件系統的配額,v-顯示信息,u-啟用用戶配額or g-啟用組配額

# edquota ftpd //為用戶ftpd設置磁碟配額

OR

# edquota -g grp //為組grp設置磁碟配額

系統會自動打開配額文件,如下:

Disk quotas for user ftpd (uid 502):

Filesystem blocks soft hard inodes soft hard

/dev/sda6 424 0 0 13 0 0

第一列是啟用了配額的文件系統的名稱。第二列顯示了用戶當前使用的塊數,單位為KB。隨後的兩列用來設置用戶在該文件系統上的軟硬塊限度。inodes 列顯示了用戶當前使用的i節點數量。最後兩列用來設置用戶在該文件系統上的軟硬i節點限度.硬限是用戶或組群可以使用的磁碟空間的絕對最大值。達到了該限度後,磁碟空間就不能再被用戶或組群使用了。軟限定義可被使用的最大磁碟空間量。和硬限不同的是,軟限可以在一段時期內被超過。這段時期被稱為過渡期(grace period),默認七天的超越。過渡期可以用秒鍾、分鍾、小時、天數、周數、或月數表示。如果以上值中的任何一個被設置為 0,那個限度就不會被設置。我設置了硬塊限度為1KB,是為了測試方便。

# quotaon -avu //打開磁碟配額監控進程,u是用戶g是組,這里我沒設置g參數

要校驗用戶的配額是否被設置,我們可以使用以下命令:

# quota ftpd

⑻ 課設要設計一個FTP伺服器,可我完全不知道第一步要幹嘛

你好! FTP(File Transfer Protocol)是文件傳輸協議的簡稱。 FTP的作用 正如其名所示:FTP的主內要作用,就是讓用戶連接上一個容遠程計算機(這些計算機上運行著FTP伺服器程序)察看遠程計算機有哪些文件,然後把文件...

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919