📄 ftp1.java
字号:
// ftp 僾儘僌儔儉Ftp1.java
// 偙偺僾儘僌儔儉偼,ftp 僒乕僶偲愙懕偟傑偡
// 僨乕僞梡僐僱僋僔儑儞傪埖傢側偄偨傔,僼傽僀儖揮憲偼偱偒傑偣傫
// 巊偄曽java Ftp1 僒乕僶傾僪儗僗
// 婲摦偺椺java Ftp1 kiku.fuis.fukui-u.ac.jp
// 儔僀僽儔儕偺棙梡
import java.net.*;
import java.io.*;
// Ftp1僋儔僗
public class Ftp1 {
// 僜働僢僩偺弨旛
Socket ctrlSocket;//惂屼梡僜働僢僩
public PrintWriter ctrlOutput;//惂屼弌椡梡僗僩儕乕儉
public BufferedReader ctrlInput;// 摨擖椡梡僗僩儕乕儉
final int CTRLPORT = 21 ;// ftp 偺惂屼梡億乕僩
// openConnection儊僜僢僪
//傾僪儗僗偲億乕僩斣崋偐傜僜働僢僩傪嶌傝惂屼梡僗僩儕乕儉傪嶌惉偟傑偡
public void openConnection(String host)
throws IOException,UnknownHostException
{
ctrlSocket = new Socket(host, CTRLPORT);
ctrlOutput = new PrintWriter(ctrlSocket.getOutputStream());
ctrlInput
= new BufferedReader(new InputStreamReader
(ctrlSocket.getInputStream()));
}
// closeConnection儊僜僢僪
//惂屼梡偺僜働僢僩傪暵偠傑偡
public void closeConnection()
throws IOException
{
ctrlSocket.close() ;
}
// showMenu儊僜僢僪
// ftp 偺僐儅儞僪儊僯儏乕傪弌椡偟傑偡
public void showMenu()
{
System.out.println(">Command?") ;
System.out.print("1 login") ;
System.out.println(" 9 quit") ;
}
// getCommand儊僜僢僪
// 棙梡幰偺巜掕偟偨僐儅儞僪斣崋傪撉傒庢傝傑偡
public String getCommand()
{
String buf = "" ;
BufferedReader lineread
= new BufferedReader(new InputStreamReader(System.in)) ;
while(buf.length() != 1){// 侾暥帤偺擖椡傪庴偗傞傑偱孞傝曉偟
try{
buf = lineread.readLine() ;
}catch(Exception e)
{
e.printStackTrace();
System.exit(1);
}
}
return (buf) ;
}
// doLogin儊僜僢僪
// ftp 僒乕僶偵儘僌僀儞偟傑偡
public void doLogin()
{
String loginName = "" ;
String password = "" ;
BufferedReader lineread
= new BufferedReader(new InputStreamReader(System.in)) ;
try{
System.out.println("儘僌僀儞柤傪擖椡偟偰偔偩偝偄") ;
loginName = lineread.readLine() ;
// USER僐儅儞僪偵傛傞儘僌僀儞
ctrlOutput.println("USER " + loginName) ;
ctrlOutput.flush() ;
// PASS僐儅儞僪偵傛傞僷僗儚乕僪偺擖椡
System.out.println("僷僗儚乕僪傪擖椡偟偰偔偩偝偄") ;
password = lineread.readLine() ;
ctrlOutput.println("PASS " + password) ;
ctrlOutput.flush() ;
}catch(Exception e)
{
e.printStackTrace();
System.exit(1);
}
}
// doQuit儊僜僢僪
// ftp 僒乕僶偐傜儘僌傾僂僩偟傑偡
public void doQuit()
{
try{
ctrlOutput.println("QUIT ") ;// QUIT僐儅儞僪偺憲怣
ctrlOutput.flush() ;
}catch(Exception e)
{
e.printStackTrace();
System.exit(1);
}
}
// execCommand儊僜僢僪
//僐儅儞僪偵懳墳偡傞奺張棟傪屇傃弌偟傑偡
public boolean execCommand(String command)
{
boolean cont = true ;
switch(Integer.parseInt(command)){
case 1 : // login 張棟
doLogin() ;
break ;
case 9 : // 張棟偺廔椆
doQuit() ;
cont = false ;
break ;
default : //偦傟埲奜偺擖椡
System.out.println("斣崋傪慖戰偟偰偔偩偝偄") ;
}
return(cont) ;
}
// main_proc儊僜僢僪
// ftp 偺僐儅儞僪儊僯儏乕傪弌椡偟偰,奺張棟傪屇傃弌偟傑偡
public void main_proc()
throws IOException
{
boolean cont = true ;
try {
while(cont){
// 儊僯儏乕傪弌椡偟傑偡
showMenu() ;
// 僐儅儞僪傪庴偗庢傝幚峴偟傑偡
cont = execCommand(getCommand()) ;
}
}
catch(Exception e){
System.err.print(e);
System.exit(1);
}
}
// getMsgs儊僜僢僪
// 惂屼僗僩儕乕儉偺庴怣僗儗僢僪傪奐巒偟傑偡
public void getMsgs(){
try {
CtrlListen listener = new CtrlListen(ctrlInput) ;
Thread listenerthread = new Thread(listener) ;
listenerthread.start() ;
}catch(Exception e){
e.printStackTrace() ;
System.exit(1) ;
}
}
// main儊僜僢僪
// TCP 僐僱僋僔儑儞傪奐偄偰張棟傪奐巒偟傑偡
public static void main(String[] arg){
try {
Ftp1 f = null;
f = new Ftp1();
f.openConnection(arg[0]); // 惂屼梡僐僱僋僔儑儞偺愝掕
f.getMsgs() ; // 庴怣僗儗僢僪偺奐巒
f.main_proc(); // ftp 張棟
f.closeConnection() ; // 僐僱僋僔儑儞偺僋儘乕僘
System.exit(0) ; // 僾儘僌儔儉偺廔椆
}catch(Exception e){
e.printStackTrace();
System.exit(1);
}
}
}
// CtrlListen 僋儔僗
class CtrlListen implements Runnable{
BufferedReader ctrlInput = null ;
// 僐儞僗僩儔僋僞撉傒庢傝愭偺巜掕
public CtrlListen(BufferedReader in){
ctrlInput = in ;
}
public void run(){
while(true){
try{ // 傂偨偡傜峴傪撉傒庢傝,昗弨弌椡偵僐僺乕偟傑偡
System.out.println(ctrlInput.readLine()) ;
} catch (Exception e){
System.exit(1) ;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -