⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pop.java

📁 一些学习java的练习作业 新手向参考资料 第四部分
💻 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 + -