📄 pop.java
字号:
// Pop3 偵傛傞儊乕儖庴怣僾儘僌儔儉Pop.java
// 偙偺僾儘僌儔儉偼,巜掕偝傟偨POP僒乕僶偐傜儊乕儖傪庢摼偟傑偡
// 巊偄曽java Pop
// 婲摦屻,POP僒乕僶偺傾僪儗僗傪暦偄偰偒傑偡
// 懳榖偺椺
// POP 僒乕僶偺傾僪儗僗傪擖椡偟偰偔偩偝偄
// kiku.fuis.fukui-u.ac.jp
// POP僒乕僶偺傾僪儗僗丗kiku.fuis.fukui-u.ac.jp
// 埲忋偱傛傠偟偄偱偡偐丠(y/n)
// y
// +OK QPOP (version 2.53) at kiku.fuis.fukui-u.ac.jp starting.
// <4752.923273295@kiku.fuis.fukui-u.ac.jp>
// 偦偺屻,POP 偺儐乕僓柤偲僷僗儚乕僪傪暦偄偰偒傑偡
// 懳榖偺椺
// user name傪擖椡偟偰偔偩偝偄
// odaka
// Password傪擖椡偟偰偔偩偝偄
// XXXXXXXX
// user name丗odaka
// Password丗XXXXXXXX
// 埲忋偱傛傠偟偄偱偡偐丠(y/n)
// 儔僀僽儔儕偺棙梡
import java.net.*;
import java.io.*;
import java.util.*;
// Pop僋儔僗
// Pop僋儔僗偼,Pop 僾儘僌儔儉偺杮懱偱偡
public class Pop {
final int POP_PORT = 110;// POP愙懕梡億乕僩斣崋(110 斣)
BufferedReader pop_in = null ;// 撉傒弌偟梡僗僩儕乕儉
PrintWriter pop_out = null ;// 彂偒崬傒梡僗僩儕乕儉
Socket pop = null ;// 僜働僢僩
// transaction儊僜僢僪
// POP3偺僙僢僔儑儞傪恑傔傑偡
public void transaction()
throws IOException
{
String buf = "" ;
BufferedReader lineread // 昗弨擖椡撉傒庢傝梡
= new BufferedReader(new InputStreamReader(System.in)) ;
boolean cont = true ;
while(cont){ //擖椡偺儖乕僾
System.out.println(
"Command : L)ist R)etrieve D)elete Q)uit") ;
buf = lineread.readLine() ;
// QUIT
if(buf.equalsIgnoreCase("Q")) cont = false ;
// LIST
else if(buf.equalsIgnoreCase("L")) getLines("LIST") ;
// RETR
else if(buf.equalsIgnoreCase("R")) {
System.out.println("Number? : ") ;
buf = lineread.readLine() ;
getLines("RETR " + buf) ;
}
// DELE
else if("D".equals(buf) || "d".equals(buf)){
System.out.println("Number? : ") ;
buf = lineread.readLine() ;
getSingleLine("DELE " + buf) ;
}
}
}
// getLines儊僜僢僪
// 夞摎偑暋悢峴偵搉傞僐儅儞僪偺張棟傪峴偄傑偡
public void getLines(String command)
throws IOException
{
boolean cont = true ;
String buf = null ;
// 僐儅儞僪偺憲晅
pop_out.print(command +"\r\n");
pop_out.flush() ;
String res = pop_in.readLine();//曉摎偺撉傒庢傝
System.out.println(res) ;
// 傕偟曉摎僐乕僪偑+OK偱側偗傟偽丒丒丒
if (!("+OK".equals(res.substring(0,3)))){
pop.close();// 僐僱僋僔儑儞傪暵偠傑偡
throw new RuntimeException(res);
}
while(cont){// 暋悢峴偺撉傒庢傝
buf = pop_in.readLine();//侾峴撉傒庢傝
System.out.println(buf) ;
// 峴摢偺扨撈僺儕僆僪偱廔椆
if(".".equals(buf)) cont = false ;
}
}
// getSingleLine儊僜僢僪
// 曉摎偑侾峴偲側傞僐儅儞僪偺張棟傪峴偄傑偡
public void getSingleLine(String command)
throws IOException
{
// 僐儅儞僪偺憲晅
pop_out.print(command +"\r\n");
pop_out.flush() ;
System.out.println(command) ;
String res = pop_in.readLine();//曉摎偺撉傒庢傝
System.out.println(res) ;
// 傕偟曉摎僐乕僪偑+OK偱側偗傟偽丒丒丒
if (!("+OK".equals(res.substring(0,3)))){
pop.close();// 僐僱僋僔儑儞傪暵偠傑偡
throw new RuntimeException(res);
}
}
// authorization儊僜僢僪
// TCP僐僱僋僔儑儞偺愝掕偲擣徹傪峴偄傑偡
public void authorization()
throws IOException
{
String buf = "" ;
BufferedReader lineread
= new BufferedReader(new InputStreamReader(System.in)) ;
boolean cont = true ;
String pop_server = null ;
String username = null ;
String password = null ;
//POP僒乕僶偺傾僪儗僗偺愝掕
while(cont){ //擖椡偺儖乕僾
System.out.println("POP 僒乕僶偺傾僪儗僗傪擖椡偟偰偔偩偝偄") ;
pop_server = lineread.readLine() ;
System.out.println(" POP 僒乕僶偺傾僪儗僗丗" + pop_server) ;
System.out.println("埲忋偱傛傠偟偄偱偡偐丠(y/n)") ;
buf = lineread.readLine() ;
if("y".equals(buf)) cont = false ;
}
// 僒乕僶偲偺愙懕
pop = new Socket(pop_server, POP_PORT);
pop_in = new BufferedReader(
new InputStreamReader(pop.getInputStream()));
pop_out = new PrintWriter(pop.getOutputStream());
// 儊僢僙乕僕偺庢摼
String res = pop_in.readLine();//曉摎偺撉傒庢傝
System.out.println(res) ;
// 傕偟曉摎僐乕僪偑+OK偱側偗傟偽丒丒丒
if (!("+OK".equals(res.substring(0,3)))){
pop.close();// 僐僱僋僔儑儞傪暵偠傑偡
throw new RuntimeException(res);
}
// 擣徹忣曬偺庢摼
cont = true ;
while(cont){ //擖椡偺儖乕僾
System.out.println("user name傪擖椡偟偰偔偩偝偄") ;
username = lineread.readLine() ;
System.out.println("Password傪擖椡偟偰偔偩偝偄") ;
password = lineread.readLine() ;
System.out.println(" user name丗" + username) ;
System.out.println(" Password丗" + password) ;
System.out.println("埲忋偱傛傠偟偄偱偡偐丠(y/n)") ;
buf = lineread.readLine() ;
if("y".equals(buf)) cont = false ;
}
// USER僐儅儞僪偲PASS僐儅儞僪偵傛傞擣徹嶌嬈
getSingleLine("USER " + username) ;
getSingleLine("PASS " + password) ;
}
// update儊僜僢僪
// POP3 偺僙僢僔儑儞傪廔椆偟傑偡
public void update()
throws IOException
{
// QUIT
getSingleLine("QUIT");
pop.close();// 僐僱僋僔儑儞傪暵偠傑偡
}
// mainproc儊僜僢僪
// POP 偺奺張棟儊僜僢僪傪屇傃弌偟傑偡
public void mainproc(String[] args)
throws IOException
{
if(args.length == 0){
authorization() ;
transaction() ;
update() ;
}else{
System.out.println("usage: java Pop ");
}
}
// main儊僜僢僪
// Pop僋儔僗偺僆僽僕僃僋僩傪惗惉偟傑偡
public static void main(String[] args)
throws IOException
{
Pop p = new Pop() ;
p.mainproc(args) ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -