日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
構(gòu)建Linux平臺(tái)下高效的C語言FTP服務(wù)器教程(linuxcftp服務(wù)器)

FTP(File Transfer Protocol)是文件傳輸協(xié)議的簡稱,是一種標(biāo)準(zhǔn)的協(xié)議,用于在Internet上傳輸文件。在Linux系統(tǒng)中,我們可以使用C語言編寫FTP服務(wù)器,實(shí)現(xiàn)文件的傳輸。在本篇文章中,我們將為大家介紹如何構(gòu)建Linux平臺(tái)下高效的C語言FTP服務(wù)器。

網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專注于成都企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁制作,對成都石涼亭等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專業(yè)營銷推廣優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。

一、環(huán)境準(zhǔn)備

在開始構(gòu)建FTP服務(wù)器之前,我們需要準(zhǔn)備好以下環(huán)境:

1. Linux操作系統(tǒng):本教程中我們以Ubuntu 18.04為例。

2. GCC編譯器:用于編譯C語言程序。

3. VSFTPD軟件:是一個(gè)可用的FTP服務(wù)器軟件,我們將其作為我們構(gòu)建FTP服務(wù)器的工具。

二、安裝VSFTPD

在Ubuntu中,通過以下命令可以安裝VSFTPD:

sudo apt-get update

sudo apt-get install vsftpd

安裝完成后,我們需要進(jìn)行配置。我們可以通過以下命令打開vsftpd.conf文件:

sudo nano /etc/vsftpd.conf

在文件末尾添加以下內(nèi)容:

# FTP共享的根目錄

local_root=/srv/ftp

# 監(jiān)聽2100端口,可根據(jù)實(shí)際需求更改

listen_port=2100

# 啟用匿名用戶功能

anonymous_enable=YES

# 可寫入,匿名用戶可創(chuàng)建文件

write_enable=YES

# 用戶限速

anon_max_rate=102400

# 防范錯(cuò)誤登錄攻擊

chroot_local_user=YES

userlist_enable=YES

userlist_file=/etc/vsftpd.userlist

userlist_deny=NO

# 日志記錄

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

connect_from_port_20=YES

pasv_enable=YES

pasv_min_port=60000

pasv_max_port=65535

在配置文件中,我們設(shè)置共享的根目錄為/srv/ftp,監(jiān)聽的端口為2100,啟用匿名用戶功能以及可寫功能,設(shè)置匿名用戶的速率為102400,防范錯(cuò)誤登錄攻擊,同時(shí)開啟了日志記錄功能。

配置完成后,我們需要重啟vsftpd服務(wù):

sudo service vsftpd restart

三、創(chuàng)建FTP客戶端

在本教程中,我們將使用C語言編寫FTP客戶端。以下是基本的代碼框架:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define FTP_CTRL_PORT 2100

#define FTP_DATA_PORT 20

int mn(int argc, char **argv){

/* 1. 創(chuàng)建socket連接 */

/* 創(chuàng)建socket描述符 */

/* 連接ftp服務(wù)器 */

/* 登錄ftp服務(wù)器 */

/* 獲取文件列表 */

return 0;

}

在上面的代碼中,我們首先定義了FTP服務(wù)端口號(hào)和數(shù)據(jù)端口號(hào),然后建立了連接,并登錄FTP服務(wù)器,最后獲取文件列表。我們需要逐一介紹這些步驟。

四、創(chuàng)建socket連接

在C語言中,我們可以使用以下代碼創(chuàng)建socket連接:

int sockfd = socket(AF_INET, SOCK_STREAM, 0);

if(sockfd == -1){

printf(“Fled to create socket\n”);

exit(EXIT_FLURE);

}

上面的代碼將創(chuàng)建一個(gè)IPv4的TCP socket連接。

接著我們需要設(shè)置服務(wù)器的地址和端口號(hào):

struct sockaddr_in server_addr;

server_addr.sin_family = AF_INET;

server_addr.sin_port = htons(FTP_CTRL_PORT);

server_addr.sin_addr.s_addr = inet_addr(“127.0.0.1”);

接著我們可以使用connect函數(shù)連接到FTP服務(wù)器:

int ret = connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));

if(ret == -1){

printf(“Fled to connect to server\n”);

exit(EXIT_FLURE);

}

五、登錄FTP服務(wù)器

下一步,我們需要登錄FTP服務(wù)器。可以使用以下代碼:

char buffer[1024];

int n;

n = recv(sockfd, buffer, sizeof(buffer), 0);

buffer[n] = ‘\0’;

printf(“%s”, buffer);

char *user = “anonymous”;

char *pass = “123456”;

char user_buffer[1024];

char pass_buffer[1024];

sprintf(user_buffer, “USER %s\r\n”, user);

sprintf(pass_buffer, “PASS %s\r\n”, pass);

send(sockfd, user_buffer, strlen(user_buffer), 0);

n = recv(sockfd, buffer, sizeof(buffer), 0);

buffer[n] = ‘\0’;

printf(“%s”, buffer);

send(sockfd, pass_buffer, strlen(pass_buffer), 0);

n = recv(sockfd, buffer, sizeof(buffer), 0);

buffer[n] = ‘\0’;

printf(“%s”, buffer);

在上面的代碼中,我們首先創(chuàng)建了一個(gè)緩沖區(qū)來接收和發(fā)送數(shù)據(jù),然后連接到服務(wù)器,并接收服務(wù)器發(fā)送的歡迎信息。

接著,我們向服務(wù)器發(fā)送用戶名和密碼。如果一切順利,服務(wù)器應(yīng)該會(huì)返回一個(gè)過渡信息表示登錄成功。

六、獲取文件列表

現(xiàn)在我們已經(jīng)登錄到FTP服務(wù)器,可以遍歷文件列表:

char list_buffer[1024];

sprintf(list_buffer, “LIST \r\n”);

send(sockfd, list_buffer, strlen(list_buffer), 0);

n = recv(sockfd, buffer, sizeof(buffer), 0);

buffer[n] = ‘\0’;

printf(“%s”, buffer);

接收文件列表后,我們可以將文件列表分別分配到每行,然后分析它們的內(nèi)容。以下是完整的代碼:

int sockfd = socket(AF_INET, SOCK_STREAM, 0);

if(sockfd == -1){

printf(“Fled to create socket\n”);

exit(EXIT_FLURE);

}

struct sockaddr_in server_addr;

server_addr.sin_family = AF_INET;

server_addr.sin_port = htons(FTP_CTRL_PORT);

server_addr.sin_addr.s_addr = inet_addr(“127.0.0.1”);

int ret = connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));

if(ret == -1){

printf(“Fled to connect to server\n”);

exit(EXIT_FLURE);

}

char buffer[1024];

int n;

n = recv(sockfd, buffer, sizeof(buffer), 0);

buffer[n] = ‘\0’;

printf(“%s”, buffer);

char *user = “anonymous”;

char *pass = “123456”;

char user_buffer[1024];

char pass_buffer[1024];

sprintf(user_buffer, “USER %s\r\n”, user);

sprintf(pass_buffer, “PASS %s\r\n”, pass);

send(sockfd, user_buffer, strlen(user_buffer), 0);

n = recv(sockfd, buffer, sizeof(buffer), 0);

buffer[n] = ‘\0’;

printf(“%s”, buffer);

send(sockfd, pass_buffer, strlen(pass_buffer), 0);

n = recv(sockfd, buffer, sizeof(buffer), 0);

buffer[n] = ‘\0’;

printf(“%s”, buffer);

char list_buffer[1024];

sprintf(list_buffer, “LIST \r\n”);

send(sockfd, list_buffer, strlen(list_buffer), 0);

n = recv(sockfd, buffer, sizeof(buffer), 0);

buffer[n] = ‘\0’;

printf(“%s”, buffer);

char *p = strtok(buffer, “\r\n”);

while(p != NULL){

printf(“%s\n”, p);

p = strtok(NULL, “\r\n”);

}

關(guān)閉連接關(guān)閉:

close(sockfd);

七、

從上面的教程可以看到,創(chuàng)建Linux平臺(tái)下高效的C語言FTP服務(wù)器并不難。本文介紹了如何安裝VSFTPD軟件以及創(chuàng)建FTP客戶端,包括連接、登錄FTP服務(wù)器和獲取文件列表等操作。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220

Linux下用C語言寫一個(gè)FTP系統(tǒng)程序,基于客戶/服務(wù)器模式

你可以參考busybox里邊的ftp源碼, 也可以看下wget的

在絕大多數(shù)的LINUX發(fā)行版本中都選用的是WashingtonUniversity

FTP,它是一個(gè)著名的FTP服務(wù)器軟件,一般簡稱為wu-ftp。它功能強(qiáng)大,能夠很好地運(yùn)行于眾多的UNIX操作系統(tǒng),例如:IBM

AIX、FreeBSD、HP-UX、NeXTstep、Dynix、SunOS、Solaris等。所以Internet上的FTP服務(wù)器,一大半以上采用了它。wu-ftp擁有許多強(qiáng)大的功能,很適于吞吐量較大的FTP服務(wù)器的管理要求:

 1) 可以在用戶下載文件的同時(shí)對文件做自動(dòng)的壓縮或解壓縮操作;

 2)

可以對不同網(wǎng)絡(luò)上的機(jī)器做不同的存取限制;

 3) 可以記錄文件上載和下載時(shí)間;

 4)

可以顯示傳輸時(shí)的相關(guān)信息,方便用戶及時(shí)了解目前的傳輸動(dòng)態(tài);

 5) 可以設(shè)置更大連接數(shù),提高了效率,有效地控制了負(fù)載。

  & 2.2 所需資源

 

   &1.2.1

所需包

   RedHat6.2 服務(wù)器安裝

   &1.2.2

所需配置文件

   /etc/ftpusers

   /etc/ftpaccess

   /var/run/ftp.pids

   /etc/ftpconversions

   /var/log/xferlog

   /etc/ftpgroups

   /etc/ftphosts

   &1.2.3 相關(guān)命令

ftpd FTP服務(wù)器程序

ftpshut 用于關(guān)閉FTP服務(wù)器程序

ftpcount 顯示目前在線人數(shù)

ftpwho

查看目前FTP服務(wù)器的連接情況

ckconfig 檢查FTP服務(wù)器的設(shè)置是否正確

ftprestart

重新啟動(dòng)FTP服務(wù)

   &1.2.4 相關(guān)目錄

/home/ftpd/bin

存放一些供FTP用戶使用的可執(zhí)行文件

/home/ftpd/etc

存放一些供FTP用戶使用的配置文件

/home/ftpd/pub 存放供下載的信息

/home/ftpd/incoming 存放供上載信息的空間

配置方案

  1.

/etc/ftpaccess

說明: ftp權(quán)限配置文件

源文件:

guestuser weboa

# FTP用戶

class   all   real,guest,anonymous 

*

class   weboa guest *

# 格式:class

   功能:

   這個(gè)指令的功能設(shè)定FTP服務(wù)器上用戶的類別。并可對客戶端的IP地址進(jìn)行限制,允許某部分的IP地址或全部的IP地址訪問。而在FTP

   服務(wù)器上的用戶基本上可以分為以下三類:

real 在該FTP服務(wù)器有合法帳號(hào)的用戶;

guest 有記錄的匿名用戶;

anonymous 權(quán)限更低的匿名用戶

email

loginfails 5

# 格式:loginfails

功能:設(shè)定當(dāng)用戶登錄到FTP服務(wù)器時(shí),允許用戶輸錯(cuò)密碼的次數(shù)。

readme  README*    login

readme  README*    cwd=*

message /welcome.msg

    login

message .message  cwd=*

#

格式:message

功能:當(dāng)用戶執(zhí)行所指定的指令時(shí),系統(tǒng)將指定的文件內(nèi)容顯示出來。

compressyesall

# 格式:compress

功能:設(shè)置哪一個(gè)類別的用戶可以使用compress(壓縮)功能。

tar  

yesall

# 格式:tar

功能:設(shè)置哪一個(gè)類別的用戶可以使用tar(歸檔)功能。

chmod      no     

guest,anonymous

# 格式:chmod

功能:

設(shè)置是否允許指定用戶使用chmod命令更改文件權(quán)限。默認(rèn)是

允許。

deleteyesall

# 格式:delete

功能:

設(shè)置是否允許指定用戶使用delete命令刪除文件。默認(rèn)是允許。

overwrite yes    guest

#

格式:overwrite

功能:設(shè)置是否允許指定用戶覆蓋同名文件。默認(rèn)是允許。

rename     yes    guest

# 

格式:rename

功能:設(shè)置是否允許指定用戶使用rename命令來為文件改名。默認(rèn)

     是允許。

log

transfers anonymous,real inbound,outbound

# 格式:log transfers

功能:

 設(shè)置哪些用戶的上載(inbound)和下載(outbound)操作做日志。

shutdown

/etc/shutmsg

# 格式:shutdown

功能:

   FTP服務(wù)器關(guān)閉的時(shí)間可以設(shè)置在后面所指定的文件中,當(dāng)設(shè)

  

置的時(shí)間一到,便無法登錄FTP服務(wù)器了,要恢復(fù)的話只有將

   這個(gè)文件刪掉。而這個(gè)文件必

須由指令/bin/ftpshut來生成。

passwd-check rfc822 warn

#

格式:passwd-check

功能:設(shè)定對匿名用戶anonymous的密碼使用方式。

   none 表示不做密碼驗(yàn)證,任何密碼都可以登錄;

   trival 表示只要輸入的密碼中含有字符“@ ” “Times New Roman”‘>就可以登錄;

   rfc822 表示密碼一定要符合RFC822中所規(guī)定的E-Mail格式才

  

能登錄;

   enfore 表示輸入的密碼不符合以上指定的格式就不讓登錄;

warn

表示密碼不符合規(guī)定時(shí)只出現(xiàn)警告信息,仍然能夠登錄。

limit remote 32 Any

/etc/ftpd/toomany.msg

# 格式:limit

功能:這個(gè)指令的功能為設(shè)置指定的時(shí)間內(nèi)指定的類別允許連接的

    

指定人數(shù)上限。當(dāng)達(dá)到上限的時(shí)候,顯示指定文件的內(nèi)容。

upload /home/ftpd * no

upload /home/ftpd /pub yes anonymous 0644 dirs

# 格式:upload

功能:對可以上載的目錄進(jìn)行更加詳細(xì)的設(shè)置。

alias incoming

/home/ftp/incoming

# 格式:alias

功能:給指定目錄設(shè)置一個(gè)別名,在切換目錄時(shí)就可以使用較短的

     目錄別名。

  2.

/etc/ftpusers

說明:FTP用戶黑名單,為了安全考慮,需要禁止以下用戶使用FTP

源文件:

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

nobody

  在眾多的網(wǎng)絡(luò)應(yīng)用中,F(xiàn)TP(File Transfer

porotocol)有著非常重要的地位。在Internet中一個(gè)十分重要的資源就是軟件資源。而各種各樣的軟件資源大多數(shù)都是放在FTP服務(wù)器中的??梢哉f,F(xiàn)TP與WEB服務(wù)幾乎占據(jù)了整個(gè)Internet應(yīng)用的80%以上。

  FTP服務(wù)可以根據(jù)服務(wù)對象的不同分為兩類:一類是系統(tǒng)FTP服務(wù)器,它只允許系統(tǒng)上的合法用戶使用;另一類是匿名FTP服務(wù)器,Anonymous

FTP Server,它使用任何人都可以登錄到FTP服務(wù)器上去獲取文件。

  如果你在安裝LINUX系統(tǒng)的時(shí)候,在選擇啟動(dòng)進(jìn)程的時(shí)候選擇了“ftpd”這一項(xiàng)的話,安裝完LINUX系統(tǒng)后,它已經(jīng)將一個(gè)默認(rèn)的FTP服務(wù)器安裝到系統(tǒng)中去了。我們已經(jīng)可以利用它來實(shí)現(xiàn)系統(tǒng)FTP服務(wù)器的功能了。我們只需在此基礎(chǔ)上根據(jù)我們的需要進(jìn)行一些個(gè)性化設(shè)定就可以了。

linux怎么搭建ftp服務(wù)器

這個(gè)操作的假說有許多,直接到網(wǎng)上去尋找就可以了

1、檢查安裝vsftpd軟件

使用如下命令#rpm -qa |grep vsftpd可以檢測出是否安裝了vsftpd軟件,

如果沒有安裝,使用YUM命令進(jìn)行安裝。

2、啟動(dòng)服務(wù)

使用vsftpd軟件,主要包括如下幾個(gè)命令:

啟動(dòng)ftp命令#service vsftpd start

停止ftp命令#service vsftpd stop

重啟ftp命令#service vsftpd restart

3、vsftpd的配置

ftp的配置文件主要有三個(gè),位于/etc/vsftpd/目錄下,分別是:

ftpusers 該文件用來指定那些用戶不能訪問ftp服務(wù)器。

user_list 該文件用來指示的默認(rèn)賬戶在默認(rèn)情況下也不能訪問ftp

vsftpd.conf vsftpd的主配置文件

4、以匿名用戶為例,我們?nèi)サ襞渲梦募sftpd.conf 里面以下

anon_upload_enable=YES

anon_mkdir_write_enable=YES

兩項(xiàng)前面的#號(hào),就可以完成匿名用戶的配置,此時(shí)匿名用戶既可以登錄上傳、下載文件。記得修改配置文件后需要重啟服務(wù)。

5、非匿名賬戶的創(chuàng)建與使用

vsftpd服務(wù)與系統(tǒng)用戶是相互關(guān)聯(lián)的,例如我們創(chuàng)建一個(gè)名為test 的系統(tǒng)用戶,那么此用戶在默認(rèn)配置的情況下就可以實(shí)現(xiàn)登錄,如圖

登錄后在頁面創(chuàng)建名為“aa”的文件夾,同樣我們在服務(wù)器test用戶 的home目錄里也可以看到相同的文件。

linux c ftp服務(wù)器的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux c ftp服務(wù)器,構(gòu)建Linux平臺(tái)下高效的C語言FTP服務(wù)器教程,Linux下用C語言寫一個(gè)FTP系統(tǒng)程序,基于客戶/服務(wù)器模式,linux怎么搭建ftp服務(wù)器的信息別忘了在本站進(jìn)行查找喔。

成都創(chuàng)新互聯(lián)科技公司主營:網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開發(fā)、網(wǎng)頁設(shè)計(jì)、微信開發(fā)、成都小程序開發(fā)、網(wǎng)站制作、網(wǎng)站開發(fā)等業(yè)務(wù),是專業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫冊、網(wǎng)頁、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開發(fā)于一體。


分享文章:構(gòu)建Linux平臺(tái)下高效的C語言FTP服務(wù)器教程(linuxcftp服務(wù)器)
URL地址:http://m.5511xx.com/article/copessg.html