Õ¾ÄÚËÑË÷: ÇëÊäÈëËÑË÷¹Ø¼ü´Ê

µ±Ç°Ò³Ãæ: ¿ª·¢×ÊÁÏÊ×Ò³ ¡ú Java רÌâ ¡ú JavaÉè¼Æ·À²¡¶¾µç×ÓÓʼþ³ÌÐòÖ®´úÂë

JavaÉè¼Æ·À²¡¶¾µç×ÓÓʼþ³ÌÐòÖ®´úÂë

ÕªÒª: ÕâÁ½¸ö³ÌÐòµÄ²Ù×÷¶¼ºÜ¼òµ¥¡£ÕâÁ½¸ö³ÌÐò½Ð×öVirPro01aºÍVirPro01b£¬·Ö±ðÓëÉÏÃæÌÖÂ۵ļٶ¨µÄÇéÐÎÖеijÌÐòAºÍ³ÌÐòB¶ÔÓ¦
¡¡¡¡ÕâÁ½¸ö³ÌÐòµÄ²Ù×÷¶¼ºÜ¼òµ¥¡£ÕâÁ½¸ö³ÌÐò½Ð×öVirPro01aºÍVirPro01b£¬·Ö±ðÓëÉÏÃæÌÖÂ۵ļٶ¨µÄÇéÐÎÖеijÌÐòAºÍ³ÌÐòB¶ÔÓ¦¡£

<iframe align=center marginWidth=0 marginHeight=0 src="http://images.chinabyte.com/adjs/iframe-pip/y-software-pip.html" frameBorder=0 width=360 scrolling=no height=300></iframe>

¡¡¡¡³ÌÐòVirPro01a

¡¡¡¡VirPro01a³ÌÐò±»Éè¼ÆΪ°ÑPOP3µç×ÓÓʼþ·þÎñÆ÷×÷Ϊ¹«¹²µÄµç×ÓÓʼþ·þÎñÆ÷£¨ÃØÃܵç×ÓÓʼþÕʺŵķþÎñÆ÷¿ÉÒÔÊÇÈκÎÀàÐ͵ģ¬ÀýÈ磬Ëü¿ÉÒÔÊǵäÐ͵ÄWebMail·þÎñÆ÷£©¡£±¾³ÌÐòÔÚWinXPÏÂʹÓÃSDK 1.4.2²âÊÔͨ¹ý¡£

¡¡¡¡ÊµÀý±äÁ¿

¡¡¡¡VirPro01aÀàµÄ¿ªÍ·¶¨ÒåÁËÒ»¸öʵÀý±äÁ¿ÁÐ±í£º

<table borderColor=#ffcc66 width="90%" align=center bgColor=#e6e4dd border=1> <tr> <td>¡¡¡¡class VirPro01a extends Frame{
¡¡¡¡¡¡String dataPath = "./Messages/";
¡¡¡¡¡¡int numberMsgs = 0;
¡¡¡¡¡¡int msgCounter = 0;
¡¡¡¡¡¡int msgNumber;
¡¡¡¡¡¡String uidl = "";//ΨһµÄPOP3ÏûÏ¢ID
¡¡¡¡¡¡BufferedReader inputStream;
¡¡¡¡¡¡PrintWriter outputStream;
¡¡¡¡¡¡Socket socket;
¡¡¡¡¡¡String pathFileName;</td></tr></table>
¡¡¡¡dataPath±äÁ¿°üº¬¶Ô±¾µØ¹¤×÷Îļþ¼ÐµÄÖ¸Õ룬¸ÃÎļþ¼ÐÊÇ´æ´¢µÈ´ý²¡¶¾É¨Ã貢ת·¢µ½ÃØÃܵç×ÓÓʼþÕʺŵÄÏûÏ¢µÄµØ·½¡£

¡¡¡¡ Äã¿ÉÄÜÏ£ÍûʹÓÃÁíÒ»¸ö²»Í¬µÄÎļþ¼Ð¡£Èç¹ûÐèÒªÕâÑù×ö£¬¼òµ¥µØÌṩ·¾¶ºÍÎļþ¼ÐÃû³Æ£¨×÷Ϊ×Ö·û´®£©¡£Äã¿ÉÒÔ·¢ÏÖ£¬ÎҵŤ×÷Îļþ¼Ð½Ð×öMessages£¬ËüÊÇÓðüº¬³ÌÐòµÄÀàÎļþµÄÎļþ¼ÐµÄÏà¶Ô·¾¶Ö¸¶¨µÄ¡£ÄãÒ²¿ÉÒÔʹÓþø¶Ô·¾¶¡£

¡¡¡¡Ê£ÓàµÄʵÀý±äÁ¿¶¼ÊdzÌÐòÓÃÓÚ²»Í¬Ä¿µÄµÄ¼òµ¥¹¤×÷±äÁ¿¡£

¡¡¡¡Main·½·¨

¡¡¡¡ÏÂÃæµÄmain·½·¨È·ÈÏÕýÈ·µÄÃüÁîÐвÎÊýÊýÁ¿£¬²¢Ê¹ÓÃÕâЩ²ÎÊýÀ´ÊµÀý»¯VirPro01aÀàµÄÒ»¸ö¶ÔÏó¡£

<table borderColor=#ffcc66 width="90%" align=center bgColor=#e6e4dd border=1> <tr> <td>public static void main(String[] args){
¡¡if(args.length != 3){
¡¡¡¡System.out.println("Usage: java VirPro01a "+ "pubServer userName password");
¡¡¡¡System.exit(0);
¡¡}// if½áÊø
¡¡new VirPro01a(args[0],args[1],args[2]);
}// main½áÊø</td></tr></table>
¡¡¡¡¹¹Ô캯Êý

¡¡¡¡ËüµÄ¹¹Ô캯ÊýÈçÏ£º

<table borderColor=#ffcc66 width="90%" align=center bgColor=#e6e4dd border=1> <tr> <td>VirPro01a(String server,String userName, String password){
¡¡int port = 110; //pop3Óʼþ¶Ë¿Ú
¡¡try{
¡¡¡¡//µÃµ½Ì×½Ó×Ö£¬Á¬½Óµ½Ìض¨·þÎñÆ÷µÄÌض¨¶Ë¿Ú
¡¡¡¡socket = new Socket(server,port);
¡¡¡¡//´ÓÌ×½Ó×ֵõ½ÊäÈëÁ÷
¡¡¡¡inputStream = new BufferedReader(new InputStreamReader(socket.getInputStream()));
¡¡¡¡//´ÓÌ×½Ó×ֵõ½Êä³öÁ÷
¡¡¡¡outputStream = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);
¡¡¡¡//Á¬½ÓºóÔÚÃüÁîÐÐÆÁÄ»ÉÏÏÔʾ´Ó·þÎñÆ÷½ÓÊÕµ½µÄÏûÏ¢
¡¡¡¡String connectMsg = validateOneLine();
¡¡¡¡System.out.println("Connected to server "+ connectMsg);
¡¡¡¡//ÏÖÔÚͨѶ½ø³Ì´¦ÓÚAUTHORIZATION ״̬¡£Ïò·þÎñÆ÷·¢ËÍÓû§ÃûºÍÃÜÂë¡£
¡¡¡¡//ÃüÁî²ÉÓÃÃ÷ÎÄ¡¢´óдµÄ·½Ê½·¢ËÍ¡£ÃüÁîºóÃæ´øÓвÎÊý¡£·¢ËÍÃüÁî¡£
¡¡¡¡outputStream.println("USER " + userName);
¡¡¡¡//µÃµ½ÏìÓ¦£¬²¢È·ÈÏÏìÓ¦ÊÇ+OK¶ø²»ÊÇ-ERR¡£
¡¡¡¡String userResponse = validateOneLine();
¡¡¡¡//ÔÚÃüÁîÐÐÆÁÄ»ÏÔʾÏìÓ¦
¡¡¡¡System.out.println("USER " + userResponse);
¡¡¡¡//Ïò·þÎñÆ÷·¢ËÍÃÜÂë
¡¡¡¡outputStream.println("PASS " + password);
¡¡¡¡//ÑéÖ¤·þÎñÆ÷µÄÏìÓ¦ÊÇ+OK ¡£ÔÚ¹ý³ÌÖÐÏÔʾÏìÓ¦¡£
¡¡¡¡System.out.println("PASS " + validateOneLine());
}catch(Exception e){e.printStackTrace();}</td></tr></table>
¡¡¡¡ÉÏÃæµÄ´úÂ뽨Á¢ÁËÓ빫¹²µç×ÓÓʼþ·þÎñÆ÷µÄͨѶ·¾¶¡£

¡¡¡¡WindowListener

¡¡¡¡ÏÂÃæµÄ´úÂëʹÓÃÄäÃûÀàʵÀý»¯Á˲¢×¢²áÁËÒ»¸öWindowListener¶ÔÏó£¬ÎªÒ³ÃæÓÒÉϽǵġ°Close¡±°´Å¥·þÎñ¡£

<table borderColor=#ffcc66 width="90%" align=center bgColor=#e6e4dd border=1> <tr> <td>this.addWindowListener(new WindowAdapter(){
¡¡public void windowClosing(WindowEvent e){
¡¡¡¡//½áÊøÓë·þÎñÆ÷µÄ¶Ô»°
¡¡¡¡outputStream.println("QUIT");
¡¡¡¡String quitResponse =validateOneLine();
¡¡¡¡//ÔÚÃüÁîÐÐÆÁÄ»ÉÏÏÔʾÏìÓ¦
¡¡¡¡System.out.println("QUIT " + quitResponse);
¡¡¡¡try{
¡¡¡¡¡¡socket.close();
¡¡¡¡}catch(Exception ex){ System.out.println("\n" + ex);}
¡¡¡¡System.exit(0);
¡¡}// windowClosing½áÊø
}// WindowAdapter()½áÊø
);// addWindowListener½áÊø</td></tr></table>
¡¡¡¡FinalÐ͵ı¾µØ±äÁ¿

¡¡¡¡ÏÂÃæµÄ´úÂëÉùÃ÷²¢³õʼ»¯Á˹¹Ô캯ÊýÖеÄÁ½¸ö±¾µØ±äÁ¿£º

<table borderColor=#ffcc66 width="90%" align=center bgColor=#e6e4dd border=1> <tr> <td>final Button startButton =new Button("Start");
final TextArea textArea =new TextArea(20,50);</td></tr></table>
¡¡¡¡ÕâÁ½¸ö±¾µØ±äÁ¿°üº¬ÁËͼ1ËùʾµÄ°´Å¥ºÍÎı¾ÇøÓòµÄÖ¸Õë¡££¨Çë×¢Ò⣬ÕâÁ½¸ö±¾µØ±äÁ¿±ØÐëʹÓÃfinal±ê¼Ç£¬ÒòΪËüÃÇÄܹ»±»ÄäÃûÀàÖж¨ÒåµÄ´úÂë·ÃÎÊ¡£ÄäÃûÀà»ò±¾µØÀàÖеĴúÂë²»ÄÜ·ÃÎÊ·Çfinal±¾µØ±äÁ¿¡££©

¡¡¡¡×¢²áActionListener

¡¡¡¡ÏÂÃæµÄ´úÂëÏÔʾÁËÓÃÓÚʵÀý»¯ºÍ×¢²á°´Å¥µÄActionListener¶ÔÏóµÄÄäÃûÀࣺ

<table borderColor=#ffcc66 width="90%" align=center bgColor=#e6e4dd border=1> <tr> <td>startButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try{
¡¡//ÏÖÔÚͨѶ½ø³Ì´¦ÓÚTRANSACTION״̬¡£¼ìË÷²¢±£´æÏûÏ¢
¡¡if(numberMsgs == 0){
¡¡¡¡outputStream.println("STAT");
¡¡¡¡String stat = validateOneLine();
¡¡¡¡//µÃµ½ÏûÏ¢µÄÊýÁ¿£¨×Ö·û´®£©
¡¡¡¡String numberMsgsStr =stat.substring(4,stat.indexOf(" ",5));
¡¡¡¡//°Ñ×Ö·û´®×ª»»ÎªÕûÐÍ
¡¡¡¡numberMsgs = Integer.parseInt(numberMsgsStr);
¡¡}// Èç¹ûnumberMsgs == 0ÖÕÖ¹
¡¡//×¢Ò⣺MsgÊýÁ¿´Ó1¶ø²»ÊÇ0¿ªÊ¼¡£¼ìË÷²¢±£´æÿ¸öÏûÏ¢¡£
¡¡//ÿ¸öÏûÏ¢ÒÔÐÂÐеľäµã½áÊø
¡¡msgNumber = msgCounter + 1;
¡¡if(msgNumber <= numberMsgs){
¡¡¡¡//´¦ÀíÏÂÒ»¸öÏûÏ¢¡£µÃµ½²¢±£´æÀ´×Ô·þÎñÆ÷µÄÏûϢΨһ±êʶ£¬
¡¡¡¡//ÑéÖ¤ÏìÓ¦
¡¡¡¡outputStream.println("UIDL " + msgNumber);
¡¡¡¡uidl = validateOneLine();
¡¡¡¡//´ò¿ªÊä³öÎļþ±£´æÏûÏ¢¡£Ê¹ÓÃUIDL×÷ΪÎļþÃû
¡¡¡¡pathFileName = dataPath + uidl;
¡¡¡¡DataOutputStream dataOut =new DataOutputStream(new FileOutputStream(pathFileName));
¡¡¡¡//·¢ËÍRETRÃüÁʼÏûÏ¢¼ìË÷½ø³Ì
¡¡¡¡outputStream.println("RETR " + msgNumber);
¡¡¡¡//ÑéÖ¤ÏìÓ¦
¡¡¡¡String retrResponse =validateOneLine();
¡¡¡¡//´Ó·þÎñÆ÷¶ÁÈ¡ÏûÏ¢µÄµÚÒ»ÐÐ
¡¡¡¡String msgLine =inputStream.readLine();
¡¡¡¡//¼ÌÐø¶ÁÈ¡ÏûÏ¢Ö±µ½Óöµ½µÚÒ»¸ö¡°.¡±·ûºÅ¡£Ëü±êʶÏûÏ¢½áÊø¡£
¡¡¡¡while(!(msgLine.equals("."))){
¡¡¡¡¡¡//°ÑÊý¾ÝÐÐдÈëÊä³öÎļþ²¢¶ÁÈ¡ÏÂÒ»ÐС£
¡¡¡¡¡¡//ÔÚдÈëÊä³öÎļþµÄʱºò²åÈëÐÂÐеÄ×Ö·û¡£
¡¡¡¡¡¡dataOut.writeBytes(msgLine + "\n");
¡¡¡¡¡¡msgLine = inputStream.readLine();
¡¡¡¡}// while½áÊø
¡¡¡¡//¹Ø±ÕÊä³öÎļþ¡£ÏÖÔÚÏûÏ¢´æ´¢ÔÚÒÔ·þÎñÆ÷ÌṩµÄ
¡¡¡¡//ΨһIDΪÎļþÃûµÄ±¾µØÎļþÖС£
¡¡¡¡dataOut.close();
¡¡¡¡//ÏÔʾ¹ý³Ì
¡¡¡¡textArea.append(msgNumber + "\n");
¡¡¡¡//Ôö¼ÓÏûÏ¢¼ÆÊýÆ÷£¬ÎªÏÂÒ»¸öÏûÏ¢×÷×¼±¸
¡¡¡¡msgCounter++;
¡¡¡¡//½ûÖ¹Óû§ÎªÃ¿¸öÐÂÏûÏ¢°´Ï°´Å¥
¡¡¡¡Toolkit.getDefaultToolkit().getSystemEventQueue().
¡¡¡¡postEvent(new ActionEvent(startButton,ActionEvent. ACTION_PERFORMED,"Start/Next"));
¡¡}//Èç¹ûmsgNumber <= numberMsgs¾ÍÖÕÖ¹
¡¡else{//msgNumber > numberMsgs
¡¡¡¡//ûÓиü¶àÏûÏ¢Á Ë¡£½ûÖ¹ Start/Next °´Å¥
¡¡¡¡startButton.setEnabled(false);
¡¡¡¡//ÌáʾÓû§
¡¡¡¡Toolkit.getDefaultToolkit().beep();
¡¡¡¡Thread.currentThread().sleep(300);
¡¡¡¡Toolkit.getDefaultToolkit().beep();
¡¡¡¡Thread.currentThread().sleep(300);
¡¡¡¡Toolkit.getDefaultToolkit().beep();
¡¡}// elseÖÕÖ¹
}// tryÖÕÖ¹
catch(Exception ex){ ex.printStackTrace();}
}// actionPerformedÖÕÖ¹
}// ActionListenerÖÕÖ¹
);// addActionListenerÖÕÖ¹</td></tr></table>
¡¡¡¡ActionListener¶ÔÏóµÄÄ¿µÄÊÇÏÂÔع«¹²µç×ÓÓʼþ·þÎñÆ÷ÉϵÄËùÓÐÏûÏ¢£¬°Ñÿ¸öµ¥¶ÀµÄÏûÏ¢·ÅÈ벻ͬµÄÎļþÖУ¬²¢°ÑÕâЩÎļþ´æ´¢ÔÚ¹¤×÷Îļþ¼ÐÖС£




¡ü·µ»ØĿ¼
ǰһƪ: ÆƳýjavaÉñ»°Ö®Ḭ̈߳´ÓÅÏȼ¶»½ÐÑ
ºóһƪ: Java×ßÏÂÉñ̳֮ͬ²½´úÂëµÈͬÓÚ¶ÏÃæ