当前位置:首页 » 文件管理 » ftp源码c

ftp源码c

发布时间: 2022-09-08 13:00:54

‘壹’ 诸位大神谁有java 实现ftp客户端的源码

您好,/ **
*创建日期:2008年12月23日

*类名:Ftp.java

*类路径:组织结构

*更改日志:

* / 包组织结构;

进口的java.io.File;

进口java.io.FileInputStream中;

进口java.io.FileOutputStream中;

进口的java。 io.IOException;

进口sun.net.TelnetInputStream;

进口sun.net.TelnetOutputStream;

进口sun.net.ftp.FtpClient;

> / **

* @作者南山地狱

* @说明FTP操作

* /

公共类的Ftp {

/ **

* BR />获取FTP目录* / 公共无效getftpList(){

字符串服务器=“IP地址 /输入FTP服务器/>弦乐用户=”“;/ / FTP服务器的登录用户名

字符串密码=“”;/ /登录FTP服务器的用户名

字符串路径密码=“”;/ / FTP路径上的服务器

尝试{
> FtpClient的FTP客户端=新FtpClient的();/ /创建FtpClient的对象

ftpClient.openServer(服务器);/ /连接到FTP服务器

ftpClient.login(用户名,密码);/ / FTP服务器 BR />如果(path.length()= 0){

ftpClient.cd(路径);

}

TelnetInputStream是= ftpClient.list();

诠释三;

而{

System.out.print((char)的C)((C = is.read())= -1!);

}

掉} is.close ();

ftpClient.closeServer();/ /退出FTP服务器

}赶上(IOException异常前){

System.out.println(ex.getMessage());

}

}

/ **

*
* /

公共无效getFtpFile(){

字符串服务器=“”;/ / IP地址中输入FTP服务器

弦乐用户=“”;/ / FTP服务器的登录用户名

字符串密码=“”;/ /登录密码为FTP服务器的用户名

字符串路径=“路径

字符串文件名“;/ /上=的FTP服务器”“;/ /下载文件名称

尝试{

FtpClient的FTP客户端=新FtpClient的();

ftpClient.openServer(服务器);

ftpClient.login(用户名,密码);

如果(路径。长度()= 0)

ftpClient.cd(路径);!

ftpClient.binary();

TelnetInputStream是= ftpClient.get(文件名);

文件file_out =新的文件(文件名);

文件输出流OS =新的文件输出流(file_out);

字节[]字节=新字节[1024];

诠释三;

而((C = is.read(字节))= -1){

os.write (字节,0,C);

}!

掉} is.close();

os.close();

ftpClient.closeServer();

}赶上(IOException异常前){

System.out.println (ex.getMessage());

}

FTP}

/ **

*文件上传到FTP

* /

公共无效putFtpFile() {

字符串服务器=“”;/ /输入IP地址对服务器

字符串用户的地址=“”;/ / FTP服务器的登录用户名

字符串密码=“”;/ / FTP服务器登录用户名密码

字符串路径=“”就 / FTP服务器/>字符串文件名=“”;/ /上传的文件名

FtpClient的FTP客户端=新的try { FtpClient的();

ftpClient.openServer(服务器);

ftpClient.login(用户名,密码);

如果(!path.length()= 0)

ftpClient.cd (路径);

ftpClient.binary();

TelnetOutputStream OS = ftpClient.put(文件名);

文件file_in =新的文件(文件名);

文件输入流是=新的文件输入流(file_in);

字节[]字节=新字节[1024];

诠释三;

同时(! (C = is.read(字节))= -1){

操作系统。写(字节,0,C);

}

掉} is.close();

os.close();

ftpClient.closeServer();

}赶上(IOException异常前){

System.out.println(ex.getMessage());

}

}
}

‘贰’ C语言实现从FTP下载、上传文件

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。
1.C语言可以使用CStdioFile函数打开本地文件。使用类CInternetSession 创建并初始化一个Internet打开FTP服务器文件。
CStdioFile继承自CFile,一个CStdioFile 对象代表一个用运行时函数fopen 打开的C 运行时流式文件。
流式文件是被缓冲的,而且可以以文本方式(缺省)或二进制方式打开。文本方式提供对硬回车—换行符对的特殊处理。当你将一个换行符(0x0A)写入一个文本方式的CStdioFile 对象时,字节对(0x0D,0x0A)被发送给该文件。当你读一个文件时,字节对(0x0D,0x0A)被翻译为一个字节(0x0A)。
CStdioFile 不支持Duplicate,LockRange,和UnlockRange 这几个CFile 函数。如果在CStdioFile 中调用了这几个函数,将会出现CNoSupported 异常。
使用类CInternetSession 创建并初始化一个或多个同时的Internet 会话。如果需要,还可描述与代理服务器的连接。
如果Internet连接必须在应用过程中保持着,可创建一个类CWinApp的CInternetSession成员。一旦已建立起Internet 会话,就可调用OpenURL。CInternetSession会通过调用全局函数AfxParseURL来为分析映射URL。无论协议类型如何,CInternetSession 解释URL并管理它。它可处理由URL资源“file://”标志的本地文件的请求。如果传给它的名字是本地文件,OpenURL 将返回一个指向CStdioFile对象的指针。
如果使用OpenURL在Internet服务器上打开一个URL,你可从此处读取信息。如果要执行定位在服务器上的指定的服务(例如,HTTP,FTP或Gopher)行为,必须与此服务器建立适当的连接。

‘叁’ 求FTP CLIENT源码(java)

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.StringTokenizer;
import sun.net.TelnetInputStream;
import sun.net.ftp.FtpClient;

public class FtpClientDemo {
public static int BUFFER_SIZE = 10240;
private FtpClient m_client;
// set the values for your server
private String host = "";
private String user = "";
private String password = "";
private String sDir = "";
private String m_sLocalFile = "";
private String m_sHostFile = "";
public FtpClientDemo() {
try {
System.out.println("Connecting to host " + host);
m_client = new FtpClient(host);
m_client.login(user, password);
System.out.println("User " + user + " login OK");
System.out.println(m_client.welcomeMsg);
m_client.cd(sDir);
System.out.println("Directory: " + sDir);
m_client.binary();
System.out.println("Success.");
} catch (Exception ex) {
System.out.println("Error: " + ex.toString());
}
}
protected void disconnect() {
if (m_client != null) {
try {
m_client.closeServer();
} catch (IOException ex) {
}
m_client = null;
}
}
public static int getFileSize(FtpClient client, String fileName)
throws IOException {
TelnetInputStream lst = client.list();
String str = "";
fileName = fileName.toLowerCase();
while (true) {
int c = lst.read();
char ch = (char) c;
if (c < 0 || ch == '\n') {
str = str.toLowerCase();
if (str.indexOf(fileName) >= 0) {
StringTokenizer tk = new StringTokenizer(str);
int index = 0;
while (tk.hasMoreTokens()) {
String token = tk.nextToken();
if (index == 4)
try {
return Integer.parseInt(token);
} catch (NumberFormatException ex) {
return -1;
}
index++;
}
}
str = "";
}
if (c <= 0)
break;
str += ch;
}
return -1;
}
protected void getFile() {
if (m_sLocalFile.length() == 0) {
m_sLocalFile = m_sHostFile;
}
byte[] buffer = new byte[BUFFER_SIZE];
try {
int size = getFileSize(m_client, m_sHostFile);
if (size > 0) {
System.out.println("File " + m_sHostFile + ": " + size
+ " bytes");
System.out.println(size);
} else
System.out.println("File " + m_sHostFile + ": size unknown");
FileOutputStream out = new FileOutputStream(m_sLocalFile);
InputStream in = m_client.get(m_sHostFile);
int counter = 0;
while (true) {
int bytes = in.read(buffer);
if (bytes < 0)
break;
out.write(buffer, 0, bytes);
counter += bytes;
}
out.close();
in.close();
} catch (Exception ex) {
System.out.println("Error: " + ex.toString());
}
}
protected void putFile() {
if (m_sLocalFile.length() == 0) {
System.out.println("Please enter file name");
}
byte[] buffer = new byte[BUFFER_SIZE];
try {
File f = new File(m_sLocalFile);
int size = (int) f.length();
System.out.println("File " + m_sLocalFile + ": " + size + " bytes");
System.out.println(size);
FileInputStream in = new FileInputStream(m_sLocalFile);
OutputStream out = m_client.put(m_sHostFile);
int counter = 0;
while (true) {
int bytes = in.read(buffer);
if (bytes < 0)
break;
out.write(buffer, 0, bytes);
counter += bytes;
System.out.println(counter);
}
out.close();
in.close();
} catch (Exception ex) {
System.out.println("Error: " + ex.toString());
}
}
public static void main(String argv[]) {
new FtpClientDemo();
}
}

‘肆’ 怎样用c或c++语言编写ftp程序 客户端和服务器端的源代码

这个问题太大了点,你可以去starforge等开源网站上去找这方面的工程。。。

‘伍’ C语言如何连接FTP,连接成功后遍历FTP下目录,包括子目录,要源代码,而且是成功案例,自以为是的靠边站!

用libcurl实现,具体代码看
http://curl.haxx.se/libcurl/c/ftpget.html

‘陆’ linux下ftp客户端源码

sudo apt-get source $packagename
$packagename 换成ftp客户端名字,如lftp,我猜lftp是最简单的。
其他常见的有
kftpgrabber
KDE下ftp客户端,支持编码选择。对中文支持较好
gftp
gnome下ftp客户端,目前对中文支持尚不太好,受抱怨颇多。
fireftp
firefox的ftp客户端插件,新版对中文支持较好。
FileZilla
对中文支持较好
CrossFTP
基于Java的稳定ftp客户端和同步工具。优良的中文/Unicode支持。

‘柒’ Linux下用C语言写一个FTP系统程序,基于客户/服务器模式

在绝大多数的LINUX发行版本中都选用的是WashingtonUniversity
FTP,它是一个着名的FTP服务器软件,一般简称为wu-ftp。它功能强大,能够很好地运行于众多的UNIX操作系统,例如:IBM
AIX、FreeBSD、HP-UX、NeXTstep、Dynix、SunOS、Solaris等。所以Internet上的FTP服务器,一大半以上采用了它。wu-ftp拥有许多强大的功能,很适于吞吐量较大的FTP服务器的管理要求:

1) 可以在用户下载文件的同时对文件做自动的压缩解压缩操作;

2)
可以对不同网络上的机器做不同的存取限制;

3) 可以记录文件上载和下载时间;

4)
可以显示传输时的相关信息,方便用户及时了解目前的传输动态;

5) 可以设置最大连接数,提高了效率,有效地控制了负载。

& 2.2 所需资源

&1.2.1
所需包

RedHat6.2 服务器安装

&1.2.2
所需配置文件

/etc/ftpusers
/etc/ftpaccess

/var/run/ftp.pids
/etc/ftpconversions

/var/log/xferlog
/etc/ftpgroups
/etc/ftphosts

&1.2.3 相关命令

ftpd FTP服务器程序

ftpshut 用于关闭FTP服务器程序
ftpcount 显示目前在线人数
ftpwho
查看目前FTP服务器的连接情况
ckconfig 检查FTP服务器的设置是否正确
ftprestart
重新启动FTP服务

&1.2.4 相关目录

/home/ftpd/bin
存放一些供FTP用户使用的可执行文件
/home/ftpd/etc
存放一些供FTP用户使用的配置文件
/home/ftpd/pub 存放供下载的信息

/home/ftpd/incoming 存放供上载信息的空间
配置方案

1.
/etc/ftpaccess

说明: ftp权限配置文件
源文件:

guestuser weboa
# FTP用户
class all real,guest,anonymous
*
class weboa guest *
# 格式:class [类名]
[real/guest/anonymous]
[IP地址]

功能:
这个指令的功能设定FTP服务器上用户的类别。并可对客户端的IP地址进行限制,允许某部分的IP地址或全部的IP地址访问。而在FTP
服务器上的用户基本上可以分为以下三类:

real 在该FTP服务器有合法帐号的用户;
guest 有记录的匿名用户;

anonymous 权限最低的匿名用户
email [email protected]

loginfails 5
# 格式:loginfails [次数]

功能:设定当用户登录到FTP服务器时,允许用户输错密码的次数。
readme README* login

readme README* cwd=*
message /welcome.msg
login
message .message cwd=*
#
格式:message [文件名称] [指令]
功能:当用户执行所指定的指令时,系统将指定的文件内容显示出来。

compress yes all
# 格式:compress
[yes/no] [类别]
功能:设置哪一个类别的用户可以使用compress(压缩)功能。
tar
yes all
# 格式:tar [yes/no] [类别]

功能:设置哪一个类别的用户可以使用tar(归档)功能。
chmod no
guest,anonymous
# 格式:chmod [yes/no] [real/anonymous/guest]

功能:
设置是否允许指定用户使用chmod命令更改文件权限。默认是

允许。
delete yes all
# 格式:delete [yes/no]
[real/anonymous/guest]
功能:

设置是否允许指定用户使用delete命令删除文件。默认是允许。
overwrite yes guest
#
格式:overwrite [yes/no] [real/anonymous/guest]

功能:设置是否允许指定用户覆盖同名文件。默认是允许。
rename yes guest
#
格式:rename [yes/no] [real/anonymous/guest]

功能:设置是否允许指定用户使用rename命令来为文件改名。默认
是允许。
log
transfers anonymous,real inbound,outbound
# 格式:log transfers
[real/guest/anonymous] [inbound/outbound]
功能:

设置哪些用户的上载(inbound)和下载(outbound)操作做日志。
shutdown
/etc/shutmsg
# 格式:shutdown [文件名]

功能:
FTP服务器关闭的时间可以设置在后面所指定的文件中,当设

置的时间一到,便无法登录FTP服务器了,要恢复的话只有将
这个文件删掉。而这个文件必
须由指令/bin/ftpshut来生成。
passwd-check rfc822 warn
#
格式:passwd-check [none/trivial/rfc822] [enforce/warn]

功能:设定对匿名用户anonymous的密码使用方式。
none 表示不做密码验证,任何密码都可以登录;

trival 表示只要输入的密码中含有字符“@ ” "Times New Roman"'>就可以登录;

rfc822 表示密码一定要符合RFC822中所规定的E-Mail格式才

能登录;
enfore 表示输入的密码不符合以上指定的格式就不让登录;
warn
表示密码不符合规定时只出现警告信息,仍然能够登录。
limit remote 32 Any
/etc/ftpd/toomany.msg
# 格式:limit [类别] [人数] [时间] [文件名]

功能:这个指令的功能为设置指定的时间内指定的类别允许连接的

指定人数上限。当达到上限的时候,显示指定文件的内容。
upload /home/ftpd * no

upload /home/ftpd /pub yes anonymous 0644 dirs
# 格式:upload [根目录]
[上载目录] [yes/no] [用户] [权限]
[dirs/nodirs]

功能:对可以上载的目录进行更加详细的设置。
alias incoming
/home/ftp/incoming
# 格式:alias [目录别名] [目录名]

功能:给指定目录设置一个别名,在切换目录时就可以使用较短的
目录别名。

2.
/etc/ftpusers

说明:FTP用户黑名单,为了安全考虑,需要禁止以下用户使用FTP
源文件:
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

在众多的网络应用中,FTP(File Transfer
porotocol)有着非常重要的地位。在Internet中一个十分重要的资源就是软件资源。而各种各样的软件资源大多数都是放在FTP服务器中的。可以说,FTP与WEB服务几乎占据了整个Internet应用的80%以上。

FTP服务可以根据服务对象的不同分为两类:一类是系统FTP服务器,它只允许系统上的合法用户使用;另一类是匿名FTP服务器,Anonymous
FTP Server,它使用任何人都可以登录到FTP服务器上去获取文件。

如果你在安装LINUX系统的时候,在选择启动进程的时候选择了“ftpd”这一项的话,安装完LINUX系统后,它已经将一个默认的FTP服务器安装到系统中去了。我们已经可以利用它来实现系统FTP服务器的功能了。我们只需在此基础上根据我们的需要进行一些个性化设定就可以了。

‘捌’ Linux下用C语言写一个FTP系统程序,包含server和client两部分

我觉得你可能没讲清楚吧,是写一个类似FTP功能的程序(包括server和client)?还是要实现一个FTP的server和client?前者很简单,先网络linux socket编程,再网络linux下文件读写,之后无非就是调通server和client的tcp连接之后,把读出来的东西发过去就是了。后者要实现完整的ftp协议,如果你只是本科的话,我觉得这个确实够难的,但这也是有开源代码的,http://sourceforge.net/projects/libftp/,反正是大作业,慢慢看吧。不过我感觉你的需求多半是前者,否则你们老师也太BT了,这年头谁还会自己开发ftp协议啊。。。

热点内容
xp文件夹共享密码 发布:2024-10-11 20:20:01 浏览:876
梦幻西游2跑商脚本 发布:2024-10-11 20:15:48 浏览:649
安卓手机如何打开dwg文件下载cad 发布:2024-10-11 20:15:39 浏览:90
jscss压缩 发布:2024-10-11 20:15:01 浏览:422
映客一键清除缓存 发布:2024-10-11 20:10:32 浏览:278
cs16服务器自己搭建多少钱 发布:2024-10-11 19:43:55 浏览:50
sql动态where 发布:2024-10-11 19:30:30 浏览:307
高速缓存设计博士论文 发布:2024-10-11 19:19:29 浏览:652
adb源码下载 发布:2024-10-11 19:15:08 浏览:978
vbe编程 发布:2024-10-11 19:08:18 浏览:402