`
- 浏览:
957527 次
-
FTP 协议(rfc939) 简单的实验(in Java)
Java代码:FTPClient.java
packageorg;
importjava.io.BufferedInputStream;
importjava.io.ByteArrayOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.io.Reader;
importjava.io.Writer;
importjava.net.Socket;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.StringTokenizer;
publicclassFtpClient...{
publicstaticfinalintDEFAULT_PORT=1968;
privatestaticintprint(Readerin)throwsIOException...{
intc;
intprev=0,current=0;
intresult=0;
intcount=0,k1=0,k2=0,k3=0;
while(prev!=' '&¤t!=' ')...{
prev=current;
c=in.read();
current=c;
if(count<3)...{
switch(count)...{
case0:
k1=current-'0';
break;
case1:
k2=current-'0';
break;
case2:
k3=current-'0';
break;
}
}
count++;
System.out.write(current);
}
result=k1*100+k2*10+k3;
returnresult;
}
privatestaticvoidprintData(Readerin)throwsIOException...{
intc=0;
while((c=in.read())!=-1)...{
System.out.print((char)c);
}
System.out.println();
}
privatestaticvoidinputCommand(Writerout,Stringcommand)throwsIOException...{
out.write(command);
out.write(" /r/n");
out.flush();
}
publicstaticvoidmain(String[]args)...{
Stringhostname="192.168.1.101";
SocketcommandConn=null;
SocketdataConn=null;
try...{
commandConn=newSocket(hostname,DEFAULT_PORT);
Writerout=newOutputStreamWriter(commandConn.getOutputStream(),
"8859_1");
InputStreamraw=commandConn.getInputStream();
BufferedInputStreambuffer=newBufferedInputStream(raw);
InputStreamReadercommandIn=newInputStreamReader(buffer,
"8859_1");
System.out.println("loginin");
inti=print(commandIn);//220
inputCommand(out,"USERwinters");
System.out.println("USERwinters");
i=print(commandIn);//331
inputCommand(out,"PASS123456");
System.out.println("PASS123456");
i=print(commandIn);//230
inputCommand(out,"SYST");
System.out.println("SYST");
i=print(commandIn);//215
inputCommand(out,"PWD");
System.out.println("PWD");
i=print(commandIn);//257
inputCommand(out,"TYPEA");
System.out.println("TYPEA");
i=print(commandIn);//200
inputCommand(out,"PASV");
System.out.println("PASV");
intport=getPortNumber(commandIn);
dataConn=newSocket(hostname,port);
BufferedInputStreamdataBuffer=newBufferedInputStream(dataConn
.getInputStream());
InputStreamReaderdataIn=newInputStreamReader(dataBuffer,
"8859_1");
System.out.println("Connected"+hostname+"on"+port);
/***//**
*LIST
*/
inputCommand(out,"LIST");
System.out.println("LIST");
System.out.print("commandIn:");
i=print(commandIn);//150
System.out.print("dataIn:");
printData(dataIn);//abc
i=print(commandIn);//226
/***//****************************************/
inputCommand(out,"PASV");
System.out.println("PASV");
port=getPortNumber(commandIn);
dataConn=newSocket(hostname,port);
dataBuffer=newBufferedInputStream(dataConn.getInputStream());
dataIn=newInputStreamReader(dataBuffer,"8859_1");
System.out.println("Connected"+hostname+"on"+port);
/***//**
*RETR
*/
inputCommand(out,"RETR1.txt");
System.out.println("RETR1.txt");
System.out.print("commandIn:");
i=print(commandIn);//150
System.out.print("dataIn:");
printData(dataIn);//abc
i=print(commandIn);//226
}catch(IOExceptione)...{
System.err.println(e);
}finally...{
try...{
if(commandConn!=null)
commandConn.close();
if(dataConn!=null)
dataConn.close();
}catch(IOExceptione)...{
System.err.println(e);
}
}
}
privatestaticintgetPortNumber(InputStreamReaderin)throwsIOException...{
intc;
intprev=0,current=0;
booleanstart=false;
ByteArrayOutputStreamout=newByteArrayOutputStream();
while(prev!=' '&¤t!=' ')...{
prev=current;
c=in.read();
current=c;
if(prev=='(')
start=true;
if(current==')')
start=false;
if(start)
out.write(current);
//System.out.println("=="+out.toString()+"==");
System.out.write(current);
}
StringipWithPort=out.toString();
StringTokenizerstk=newStringTokenizer(ipWithPort,",");
Listlist=newArrayList();
while(stk.hasMoreTokens())...{
list.add(stk.nextToken());
}
String[]str=(String[])list.toArray(newString[list.size()]);
inta=Integer.parseInt(str[4]);
intb=Integer.parseInt(str[5]);
intport=a*256+b;
//System.out.println("debug:port=="+port);
returnport;
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
FTP RFC document English version.
Ftp协议:RFC959和HTTP协议:RFC2616
都是以前收集的FTP协议RFC精华,还是中文的,现在网上很难下到了 RFC1123 - 互联网主机必要条件——应用程序和支持.pdf RFC1579 - 防火墙-友好FTP.pdf RFC1635 - 怎样使用匿名FTP.pdf RFC2151 - 关于Internet和...
rfc959FTP传输协议2
用java实现的ftp功能的源代码,经过编译通过的,可以直接使用。
FTP协议介绍 rfc959 是协议分析学习的官方基础资料
配套资料-FTP协议的RFC-rfc0959.txt
NULL 博文链接:https://jony-hwong.iteye.com/blog/666054
RFC959 -FTP协议官方规范文档,写FTP应用程序必读的参考资料。(英文原版)
文件传输协议(英文:File Transfer Protocol,简称为FTP)是用于在网络上进行文件传输的一套标准协议。它属于网络协议组的应用...FTP协议的官方标准文档是RFC959,这里有中文版和英文版两种可供下载,文档格式是PDF。
rfc ftp的完整协议, 开发ftp的必读文档
【设计题目】:FTP 协议的实现 【设计目的】: 1) 加深对 TCP/IP 协议的理解。 2) 了解 FTP 协议的工作原理。 3) 掌握用 MFC 编写 FTP 协议的实现程序(也可自选工具)。 【设计任务】: 在 Visual C++6. 0 的...
网络协议的最常见的txt文档表示 常见网络协议RFC文档
RFC1445 简单网络管理协议(SNMPv2)版本 2的管理模式 RFC1454 下一代IP提议的比较 RFC1461 通过X.25多协议互连SNMP管理系统库(MIB)扩展 RFC1469 通过令牌-环局域网的IP多点传送 RFC1483 通过ATM适应层5的多协议封装 ...
RFC821-简单邮件传输协议(SMTP)中文版
RFC1445 简单网络管理协议(SNMPv2)版本 2的管理模式 RFC1454 下一代IP提议的比较 RFC1461 通过X.25多协议互连SNMP管理系统库(MIB)扩展 RFC1469 通过令牌-环局域网的IP多点传送 RFC1483 通过ATM适应层5的多协议封装 ...
RDP协议RFC英文文档
非常实用的例子,一看就会,最近使用java连接RFC,把这个例子保存,以后方便查看。
TCPIP协议簇常见协议RFC对应表(推荐)
capwap协议rfc文档,开发帮助手册