实验七应用层网络编程一文档格式.docx
- 文档编号:3640373
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:18
- 大小:176.11KB
实验七应用层网络编程一文档格式.docx
《实验七应用层网络编程一文档格式.docx》由会员分享,可在线阅读,更多相关《实验七应用层网络编程一文档格式.docx(18页珍藏版)》请在冰点文库上搜索。
protectedStringsubject="
protectedStringbody="
protectedSocketsocket;
protectedBufferedReaderbr;
protectedPrintWriterpw;
//ConstructsanewinstanceoftheSMTPClient
publicSMTPClientDemo()throwsException{
try{
getInput();
sendEmail();
}catch(Exceptione){
System.out.println("
Errorsendingmessage-"
+e);
}
publicstaticvoidmain(String[]args)throwsException{
//StarttheSMTPclient,soitcansendmessages
SMTPClientDemoclient=newSMTPClientDemo();
//ChecktheSMTPresponsecodeforanerrormessage
protectedintreadResponseCode()throwsException{
Stringline=br.readLine();
System.out.println("
<
"
+line);
line=line.substring(0,line.indexOf("
));
returnInteger.parseInt(line);
//Writeaprotocolmessagebothtothenetworksocketandtothescreen
protectedvoidwriteMsg(Stringmsg)throwsException{
pw.println(msg);
pw.flush();
>
+msg);
//Closeallreaders,streamsandsockets
protectedvoidcloseConnection()throwsException{
pw.close();
br.close();
socket.close();
//SendtheQUITprotocolmessage,andterminateconnection
protectedvoidsendQuit()throwsException{
SendingQUIT"
);
writeMsg("
QUIT"
readResponseCode();
ClosingConnection"
closeConnection();
//SendanemailmessageviaSMTP,adheringtotheprotocolknownasRFC2821
protectedvoidsendEmail()throwsException{
Sendingmessagenow:
Debugbelow"
---------------------------------"
+
-----------------------------"
OpeningSocket"
socket=newSocket(this.hostname,this.port);
CreatingReader&
Writer"
br=newBufferedReader(newInputStreamReader(socket.getInputStream()));
pw=newPrintWriter(newOutputStreamWriter(socket.getOutputStream()));
Readingfirstline"
intcode=readResponseCode();
if(code!
=220){
thrownewException("
InvalidSMTPServer"
Sendinghelocommand"
HELO"
+InetAddress.getLocalHost().getHostName());
code=readResponseCode();
=250){
sendQuit();
Sendingmailfromcommand"
MAILFROM:
+this.from+"
Invalidfromaddress"
Sendingrcpttocommand"
RCPTTO:
+this.to+"
Invalidtoaddress"
Sendingdatacommand"
DATA"
=354){
Dataentrynotaccepted"
Sendingmessage"
Subject:
+this.subject);
To:
+this.to);
From:
+this.from);
writeMsg(body);
=250)
Messagemaynothavebeensentcorrectly"
else
Messagesent"
//Obtaininputfromtheuser
protectedvoidgetInput()throwsException{
//Readinputfromuserconsole
Stringdata=null;
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
//RequesthostnameforSMTPserver
System.out.print("
PleaseenterSMTPserverhostname:
data=br.readLine();
if(data==null||data.equals("
))hostname="
elsehostname=data;
//Requestthesender'
semailaddress
PleaseenterFROMemailaddress:
from=data;
//Requesttherecipient'
PleaseenterTOemailaddress:
if(!
(data==null||data.equals("
)))
to=data;
Pleaseentersubject:
subject=data;
Pleaseenterplain-textmessage('
.'
character"
+
onablanklinesignalsendofmessage):
StringBufferbuffer=newStringBuffer();
//Readuntiluserentersa.onablankline
while(line!
=null){
//Checkfora'
andonlya'
onaline
if(line.equalsIgnoreCase("
."
)){
break;
buffer.append(line);
buffer.append("
\n"
line=br.readLine();
.\n"
body=buffer.toString();
}
【实验结果与分析】
2.POP3编程(参考电子讲义“网络编程参考资料-应用层.pdf”及教材“第2章Socket编程”)
阅读“网络编程参考资料-应用层.pdf”中8.3.2部分,实现“POP3客户实现”的源代码(Pop3ClientDemo.java),并在机器上编译运行通过。
可输入城院POP3邮件服务器或其他邮件服务器作为POP3服务器)
Pop3ClientDemo.java
publicclassPop3ClientDemo{
protectedintport=110;
protectedStringusername="
protectedStringpassword="
//ConstructsanewinstanceofthePOP3client
publicPop3ClientDemo()throwsException{
//Getuserinput
//Getmailmessages
displayEmails();
}catch(Exceptione){
System.err.println("
Erroroccured-detailsfollow"
e.printStackTrace();
System.out.println(e.getMessage());
//ReturnsTRUEifPOPresponseindicatessuccess,FALSEiffailure
protectedbooleanresponseIsOk()throwsException{
//和SMTP不同的地方,POP3的回覆不再是一個number而是
//+OK來代表要求成功。
失敗則以-ERR來代表。
returnline.toUpperCase().startsWith("
+OK"
//ReadsalinefromthePOPserver,anddisplaysittoscreen
protectedStringreadLine(booleandebug)throwsException{
//Appenda<
charactertoindicatethisisaserverprotocolresponse
if(debug)
System.out.println(line);
returnline;
//WritesalinetothePOPserver,anddisplaysittothescreen
//Closeallwriters,streamsandsockets
//SendtheQUITcommand,andcloseconnection
readLine(true);
//Displayemailsinamessage
protectedvoiddisplayEmails()throwsException{
BufferedReaderuserinput=newBufferedReader(new
InputStreamReader(System.in));
Displayingmailboxwithprotocolcommands"
andresponsesbelow"
-----------------------------------------"
---------------------"
//OpenaconnectiontoPOP3server
socket=newSocket(this.hostname,this.port);
//Ifresponsefromserverisnotokay
responseIsOk()){
InvalidPOP3Server"
//LoginbysendingUSERandPASScommands
Sendingusername"
USER"
+this.username);
responseIsOk()){
Invalidusername"
Sendingpassword"
PASS"
+this.password);
Invalidpassword"
//Getmailcountfromserver....
Checkingmail"
STAT"
//...andparsefornumberofmessages
Stringline=readLine(true);
StringTokenizertokens=newStringTokenizer(line,"
//+OK
tokens.nextToken();
//numberofmessages
intmessages=Integer.parseInt(tokens.nextToken());
//sizeofallmessages
intmaxsize=Integer.parseInt(tokens.nextToken());
if(messages==0){
Therearenomessages."
return;
Thereare"
+messages+"
messages."
Pressentertocontinue."
userinput.readLine();
for(inti=1;
i<
=messages;
i++){
Retrievingmessagenumber"
+i);
RETR"
--------------------"
line=readLine(false);
=null&
&
!
line.equals("
Pressentertocontinue.Tostop,"
typeQthenenter"
Stringresponse=userinput.readLine();
if(response.toUpperCase().startsWith("
Q"
))
Pop3ClientDemoclient=newPop3ClientDemo();
//Readuserinput
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in))
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验七 应用层网络编程一 实验 应用 网络 编程