网络编程技术第十周

上传人:cn****1 文档编号:590474286 上传时间:2024-09-14 格式:PPT 页数:61 大小:1.03MB
返回 下载 相关 举报
网络编程技术第十周_第1页
第1页 / 共61页
网络编程技术第十周_第2页
第2页 / 共61页
网络编程技术第十周_第3页
第3页 / 共61页
网络编程技术第十周_第4页
第4页 / 共61页
网络编程技术第十周_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《网络编程技术第十周》由会员分享,可在线阅读,更多相关《网络编程技术第十周(61页珍藏版)》请在金锄头文库上搜索。

1、第五次课 Socket 编程(3)JavaMail编程(1)计算机科学与技术学院计算机科学与技术学院 网络工程教研室网络工程教研室 袁卫华袁卫华计算机科学与技术学院网络工程教研室Socket编程(2)零、习题讲解零、习题讲解一、数据报式套接字一、数据报式套接字五、小结和作业五、小结和作业二、常用的邮件协议二、常用的邮件协议三、环境配置三、环境配置计算机科学与技术学院网络工程教研室一、数据报式套接字1、UDP协议协议u用户数据报协议:用户数据报协议:UserDatagramProtocol一种面向无连接的传输层协议,提供面向操作的简单的不一种面向无连接的传输层协议,提供面向操作的简单的不可靠数据

2、传送服务。在网络中它与可靠数据传送服务。在网络中它与TCP协议一样用于处理数协议一样用于处理数据包。据包。UDP协议在发送数据时并不刻意追求数据包会完全发送出协议在发送数据时并不刻意追求数据包会完全发送出去,也不能担保它们抵达的顺序与它们发出时一样,所以它去,也不能担保它们抵达的顺序与它们发出时一样,所以它是一种不可靠协议。是一种不可靠协议。UDP传输数据之前客户端和服务器端不建立连接,当它想传输数据之前客户端和服务器端不建立连接,当它想发送数据时则获取来自应用程序的数据,并尽可能快地把它发送数据时则获取来自应用程序的数据,并尽可能快地把它放到网络上。放到网络上。由于传输数据时不需建立连接,不

3、需维护连接状态,因此由于传输数据时不需建立连接,不需维护连接状态,因此一台服务器可同时向多个客户传输相同的数据。一台服务器可同时向多个客户传输相同的数据。计算机科学与技术学院网络工程教研室一、数据报式套接字2、数据报式套接字中所需的类、数据报式套接字中所需的类uDatagramPacket类类数据报包封装类。把具体的要传输的信息,包含数据报包封装类。把具体的要传输的信息,包含IP地址,地址,端口号和需要传输的数据端口号和需要传输的数据等封装在称为数据报包等封装在称为数据报包(Datagram)的)的UDP包中。包中。uDatagramSocket类类用于收发用于收发UDP数据报的套接字接口类。

4、数据报的套接字接口类。为发送数据,要将数据封装到为发送数据,要将数据封装到DatagramPacket中,使用中,使用DatagramSocket发送该包。发送该包。为接收数据,要从为接收数据,要从DatagramSocket中接收一个中接收一个DatagramPakcet对象,然后解析该包的内容对象,然后解析该包的内容计算机科学与技术学院网络工程教研室一、数据报式套接字3、DatagramSocket类类u功能功能该类表示用来发送和接收数据报包的套接字(该类表示用来发送和接收数据报包的套接字(Socket)。)。要收发要收发DatagramPacket,必须,必须创建创建一个数据报套接字一个

5、数据报套接字DatagramSocket。u构造方法构造方法publicDatagramSocket()throwsSocketException功能:创建用于数据报通信的功能:创建用于数据报通信的socket对象,由本地主机自动对象,由本地主机自动指定的一个可用的端口号。指定的一个可用的端口号。DatagramSocketsocket=newDatagramSocket();/创建创建一个用于一个用于收发数据报的收发数据报的DatagramSocket对象对象计算机科学与技术学院网络工程教研室一、数据报式套接字3、DatagramSocket类类u构造方法构造方法publicDatagram

6、Socket(intport)throwsSocketException功能:创建用于数据报通信的功能:创建用于数据报通信的socket对象,并且把它绑定到对象,并且把它绑定到本地主机指定的端口本地主机指定的端口port。publicDatagramSocket(intport,InetAddressaddr)throwsSocketException功能:创建用于数据报通信的功能:创建用于数据报通信的socket对象,并绑定到指定的对象,并绑定到指定的本地地址本地地址addr的指定端口的指定端口port。DatagramSocketsocket=newDatagramSocket(3000)

7、;/在端口在端口3000创建用于通信的创建用于通信的Socket对象对象计算机科学与技术学院网络工程教研室一、数据报式套接字3、DatagramSocket类类u常用方法常用方法一、发送方法一、发送方法publicvoidsend(DatagramPacketp)throwsIOException功能:功能:将将数据报包数据报包p发送出去发送出去。二、接收方法二、接收方法publicsynchronizedvoidreceive(DatagramPacketp)throwsIOException从网络接收一个从网络接收一个UDP数据报包数据报包,并,并存储在存储在DatagramPacket类

8、类对象对象p中。该数据报包中。该数据报包p还包含发送方的还包含发送方的IP地址和发送方主机地址和发送方主机的端口号。的端口号。计算机科学与技术学院网络工程教研室一、数据报式套接字3、DatagramSocket类类publicintgetLocalPort()功能:获取该功能:获取该socket绑定的本地主机的端口号。绑定的本地主机的端口号。publicvoidclose()功能:释放该数据报功能:释放该数据报socket所占用的端口。所占用的端口。u常用方法常用方法publicInetAddressgetLocalAddress()功能:获取该功能:获取该socket绑定的本地地址。绑定的本

9、地地址。计算机科学与技术学院网络工程教研室一、数据报式套接字4、DatagramPacket类类u功能功能是进行数据报通信的基本单位。包含了是进行数据报通信的基本单位。包含了IP地址、端口号和地址、端口号和需要传输的数据等。在发送和接收数据报时,要创建需要传输的数据等。在发送和接收数据报时,要创建DatagramPakcet类对象作为数据的载体。类对象作为数据的载体。u构造方法之一:发送用的数据报构造方法之一:发送用的数据报publicDatagramPacket(byteibuf,intilength,InetAddressiaddr,intiport)u构造方法之二:接收用的数据报构造方法

10、之二:接收用的数据报publicDatagramPacket(byteibuf,intilength)计算机科学与技术学院网络工程教研室一、数据报式套接字4、DatagramPacket类类u构造方法之一:发送用的数据报构造方法之一:发送用的数据报publicDatagramPacket(byteibuf,intilength,InetAddressiaddr,intiport)功能:功能:创建一个用于创建一个用于发送数据报发送数据报的的DatagramPacket类对象。类对象。参数:参数:ibuf:存储数据报的缓冲区。:存储数据报的缓冲区。ilength:发送数据报的长度,必须小于等于。:

11、发送数据报的长度,必须小于等于。iaddr:数据报要发送到的目的:数据报要发送到的目的IP地址。地址。iport:数据报要发送到的目的地址的端口号。:数据报要发送到的目的地址的端口号。计算机科学与技术学院网络工程教研室一、数据报式套接字4、DatagramPacket类类u构造方法之一:发送用的数据报构造方法之一:发送用的数据报publicDatagramPacket(byteibuf,intilength,InetAddressiaddr,intiport)举例:举例:Stringdate=newDate().toString();/获取服务器当前时间获取服务器当前时间buf=date.ge

12、tBytes();/将当前日期时间存入字节数组将当前日期时间存入字节数组bufpacket=newDatagramPacket(buf,buf.length,addr,port);/构造发送数据报包构造发送数据报包socket.send(packet);/发送数据报发送数据报计算机科学与技术学院网络工程教研室一、数据报式套接字4、DatagramPacket类类u构造方法之一:接收用的数据报构造方法之一:接收用的数据报publicDatagramPacket(byteibuf,intilength)功能:功能:创建一个用于创建一个用于接收数据报接收数据报的的DatagramPacket类对象。

13、类对象。参数:参数:ibuf:存储数据报的缓冲区。在数据报通信中,发送和接收一:存储数据报的缓冲区。在数据报通信中,发送和接收一个数据报,都需提供一个缓冲区,用来安置发送和接收到的数个数据报,都需提供一个缓冲区,用来安置发送和接收到的数据报。据报。ilength:接收数据报的长度,必须小于等于。:接收数据报的长度,必须小于等于。举例:举例:DatagramPacketpacket=newDatagramPacket(buf,buf.length);socket.receive(packet);/接收数据报包接收数据报包计算机科学与技术学院网络工程教研室一、数据报式套接字4、DatagramPa

14、cket类类u常用方法之常用方法之解析数据报包解析数据报包的方法的方法(1)publicsynchronizedInetAddressgetAddress()功能:返回存放在接收或发送的数据报中的功能:返回存放在接收或发送的数据报中的IP地址地址。(2)publicsynchronizedintgetPort()功能:返回存放在接收或发送的数据报中的端口号功能:返回存放在接收或发送的数据报中的端口号。(3)publicsynchronizedbytegetData()功能:返回存放在数据报中的数据。功能:返回存放在数据报中的数据。(4)publicsynchronizedintgetLengt

15、h()功能:返回数据报中数据的长度。功能:返回数据报中数据的长度。计算机科学与技术学院网络工程教研室一、数据报式套接字4、DatagramPacket类类u常用方法之常用方法之解析数据报包解析数据报包的方法的方法举例举例InetAddressaddr=packet.getAddress();intport=packet.getPort();/解析收到的数据报包解析收到的数据报包packet,返回客户端的,返回客户端的IP地址和端口号地址和端口号Stringtime=newString(packet.getData();/解析数据报包,获取其中的数据内容解析数据报包,获取其中的数据内容计算机科学

16、与技术学院网络工程教研室一、数据报式套接字4、DatagramPacket类类u常用方法之常用方法之封装数据报包封装数据报包的方法的方法(5)publicsynchronizedvoidsetAddress(InetAddressiaddr)功能:设置发送数据报的目的地址为功能:设置发送数据报的目的地址为iaddr。(6)publicsynchronizedvoidsetPort(intiport)功能:设置发送数据报的目的地址的端口号为功能:设置发送数据报的目的地址的端口号为iport。(7)publicsynchronizedvoidsetData(byteibuf)功能:设置数据报中的数

17、据内容为字节数组功能:设置数据报中的数据内容为字节数组ibuf的数据。的数据。(8)publicsynchronizedvoidsetLength(intilength)功能:设置数据报中的数据的长度为功能:设置数据报中的数据的长度为ilength。计算机科学与技术学院网络工程教研室一、数据报式套接字5、编程基本步骤、编程基本步骤开发基于开发基于UDP协议的网络应用程序时,需分别编写客户端协议的网络应用程序时,需分别编写客户端和服务器端两个应用程序,这两个程序的基本架构相似。基和服务器端两个应用程序,这两个程序的基本架构相似。基本步骤如下:本步骤如下:(1)建立一个)建立一个DatagramS

18、ocket对象;对象;(2)创建用于发送数据的)创建用于发送数据的DatagramPacket对象;对象;封装:数据内容,数据长度,目的封装:数据内容,数据长度,目的IP地址,目的端口号地址,目的端口号或或创建用于接收数据的创建用于接收数据的DatagramPacket对象;对象;封装:封装:存储数据报的缓冲区存储数据报的缓冲区ibuf及缓冲区长度及缓冲区长度(3)利用)利用DatagramSocket类方法类方法receive()或或send()接收或接收或发送数据报包。发送数据报包。计算机科学与技术学院网络工程教研室一、数据报式套接字5、编程基本步骤、编程基本步骤u举例举例-1:和:和服务

19、器开启了一个查询本机时间的服务,客户机如果需要服务器开启了一个查询本机时间的服务,客户机如果需要查询服务器当前时间,就向服务器发送一个查询服务器当前时间,就向服务器发送一个UDP数据报包,数据报包,服务器将其当前的系统时间封装在一个服务器将其当前的系统时间封装在一个UDP数据报包中发送数据报包中发送给客户机。给客户机。运行界面运行界面运行界面运行界面计算机科学与技术学院网络工程教研室一、数据报式套接字5、编程基本步骤、编程基本步骤u举例举例-2:和:和服务器开启了一个查询本机时间的服务,客户机如果需要服务器开启了一个查询本机时间的服务,客户机如果需要查询服务器当前时间,就向服务器发送一个查询服

20、务器当前时间,就向服务器发送一个UDP数据报包,数据报包,服务器将其当前的系统时间封装在一个服务器将其当前的系统时间封装在一个UDP数据报包中发送数据报包中发送给客户机。给客户机。p思路思路3.然后将本机当前时间封装在一个以客户机然后将本机当前时间封装在一个以客户机IP地址和端口号地址和端口号的数据报包中,发送给客户机。的数据报包中,发送给客户机。4.客户机收到后将时间解析出来显示。客户机收到后将时间解析出来显示。计算机科学与技术学院网络工程教研室一、数据报式套接字5、编程基本步骤、编程基本步骤u举例举例-1:服务器端服务器端在端口在端口3000创建创建DatagramSocket对象对象so

21、cket构造接收数据报包的构造接收数据报包的DataPacket对象对象packetsocket.receive(packet);进入循环进入循环继续继续接收接收其他其他客户客户机的机的数据数据报包报包获取系统当前时间并转换为字符串:获取系统当前时间并转换为字符串:Stringdate=newDate().toString();buf=date.getBytes();从客户端收到的数据报包中从客户端收到的数据报包中packet中解中解析出客户机的析出客户机的IP地址和端口号地址和端口号创建确定数据内容、创建确定数据内容、IP地址和端口号的数据报包,地址和端口号的数据报包,并通过并通过socke

22、t.send(packet)将其发送给客户机将其发送给客户机计算机科学与技术学院网络工程教研室一、数据报式套接字5、编程基本步骤、编程基本步骤u举例举例-1:关键代码关键代码1.构造构造DatagramSocketDatagramSocketsocket=newDatagramSocket(3000);2.构造接收数据报包构造接收数据报包bytebuf=newbyte256;DatagramPacketpacket=newDatagramPacket(buf,buf.length);socket.receive(packet);计算机科学与技术学院网络工程教研室一、数据报式套接字5、编程基本步

23、骤、编程基本步骤u举例举例-1:关键代码关键代码3.解析数据报包解析数据报包InetAddressaddr=packet.getAddress();intport=packet.getPort();4.构造发送数据报包构造发送数据报包Stringdate=newDate().toString();buf=date.getBytes();packet=newDatagramPacket(buf,buf.length,addr,port);socket.send(packet);计算机科学与技术学院网络工程教研室一、数据报式套接字5、编程基本步骤、编程基本步骤u举例举例-1:程序流程图程序流程图创

24、建要发送的数据报包创建要发送的数据报包packet以客户机的任意端口号创建以客户机的任意端口号创建DatagramSocket对象对象socketsocket.send(packet);将将packet数据报包发送给服务器数据报包发送给服务器创建接收的数据报包创建接收的数据报包packet通过通过socket.receive(packet)从服务器接收数据报从服务器接收数据报包,存放在包,存放在packet中中通过通过packet.getData()方法从方法从packet中解析出服务器发送中解析出服务器发送过来的时间,并显示过来的时间,并显示关闭关闭socket计算机科学与技术学院网络工程教

25、研室一、数据报式套接字5、编程基本步骤、编程基本步骤u举例举例-1:关键代码关键代码1.构造构造socketDatagramSocketsocket=newDatagramSocket();2.构造发送数据报包并发送构造发送数据报包并发送DatagramPacketpacket=newDatagramPacket(msg,msg.length,InetAddress.getByName(host),port);DatagramSocketsocket=newDatagramSocket();socket.send(packet);计算机科学与技术学院网络工程教研室一、数据报式套接字5、编程基本

26、步骤、编程基本步骤u举例举例-1:关键代码关键代码3.构造接收数据报包并解析构造接收数据报包并解析packet=newDatagramPacket(msg,msg.length);socket.receive(packet);Stringtime=newString(packet.getData();System.out.println(侦听服务器:侦听服务器:+host+的当前时间是:的当前时间是:+time);计算机科学与技术学院网络工程教研室一、数据报式套接字6、编程总结、编程总结u举例举例-1:和:和问题问题1.客户端发送给服务器的数据报包中封装的数据部分的内客户端发送给服务器的数据报

27、包中封装的数据部分的内容是什么?容是什么?2. 服务器发送给客户端的数据报包中封装的数据部分的内服务器发送给客户端的数据报包中封装的数据部分的内容是什么?容是什么?3.服务器端是如何知道客户端的服务器端是如何知道客户端的IP地址和端口号的?地址和端口号的?构造的发送数据报包和接收数据报包对象有何不同?构造的发送数据报包和接收数据报包对象有何不同?计算机科学与技术学院网络工程教研室一、数据报式套接字6、编程总结、编程总结u举例举例-1:和:和程序的执行流程?程序的执行流程?服务器服务器客户端客户端封装一个数据封装一个数据报包报包DatagramSocketsocket=newDatagramSo

28、cket(3000);System.out.println(等待接收数据等待接收数据.);启动后监听启动后监听客户的请求客户的请求Stringhost=localhost;bytemsg=newbyte256;InetAddressaddr=InetAddress.getByName(host);System.out.println(侦听主机为:侦听主机为:+addr);DatagramPacketpacket=newDatagramPacket(msg,msg.length,addr,3000);计算机科学与技术学院网络工程教研室一、数据报式套接字6、编程总结、编程总结u举例举例-2:和:和

29、程序的执行流程?程序的执行流程?将封装好的数据报将封装好的数据报包发送给服务器包发送给服务器服务器服务器客户端客户端封装一个数封装一个数据报包据报包启动后监听启动后监听客户的请求客户的请求DatagramSocketsocket=newDatagramSocket();socket.send(packet);接收此数据接收此数据报包报包bytebuf=newbyte256;DatagramPacketpacket=newDatagramPacket(buf,buf.length);socket.receive(packet);计算机科学与技术学院网络工程教研室一、数据报式套接字6、编程总结、编

30、程总结u举例举例-2:和:和将封装好的数将封装好的数据报包发送给据报包发送给服务器服务器服务器服务器客户端客户端封装一个数据封装一个数据报包报包启动后监听启动后监听客户的请求客户的请求接收此数据接收此数据报包报包解析此数据报包,取得客解析此数据报包,取得客户端主机的户端主机的IP地址和端口地址和端口号号addr和和portInetAddressaddr=packet.getAddress();intport=packet.getPort();取得服务器当前时间取得服务器当前时间time,将其封装在数,将其封装在数据报包据报包packet中,并中,并发送给客户端。发送给客户端。packet=ne

31、wDatagramPacket(buf,buf.length,addr,port);socket.send(packet);接收服务器端发接收服务器端发送过来的数据报送过来的数据报包包packetpacket=newDatagramPacket(msg,msg.length);socket.receive(packet);解析收到的数解析收到的数据报包据报包packetStringtime=newString(packet.getData();System.out.println(侦听主侦听主机为机为+host+的当前日期时的当前日期时间为:间为:+time);关闭关闭socket:socke

32、t.close();计算机科学与技术学院网络工程教研室一、数据报式套接字7、问题、问题思考:思考:1.UDP套接字与套接字与TCP套接字编程存在什么区别?套接字编程存在什么区别?2.观察,如何将下图红色框线表示的部分去掉?观察,如何将下图红色框线表示的部分去掉?计算机科学与技术学院网络工程教研室一、因特网电子邮件系统的组成一、因特网电子邮件系统的组成二、常用的邮件协议用户代理用户代理邮件服务器邮件服务器简单邮件传输协议简单邮件传输协议SMTP1.用户代理用户代理uuseragent,又称为邮件阅读器,允许用户阅读、回复、,又称为邮件阅读器,允许用户阅读、回复、转发、保存和撰写报文。俗称电子邮件

33、客户端软件。转发、保存和撰写报文。俗称电子邮件客户端软件。u常用的电子邮件客户端软件常用的电子邮件客户端软件Foxmail,Outlook,Dreammail,KooMail,IncrediMail,Becky!,PocoMail,Thunderbird,TheBat!,Eudora计算机科学与技术学院网络工程教研室一、因特网电子邮件系统的组成一、因特网电子邮件系统的组成二、常用的邮件协议2.邮件服务器邮件服务器umailserver,电子邮件体系结构的核心。每个用户可以在,电子邮件体系结构的核心。每个用户可以在某个邮件服务器上注册一个邮箱,来管理和维护发送给他某个邮件服务器上注册一个邮箱,来

34、管理和维护发送给他的邮件。的邮件。如如126,163邮件服务器等。邮件服务器等。u发送邮件服务器和接收邮件服务器发送邮件服务器和接收邮件服务器发送邮件服务器:使用邮件发送协议发送邮件服务器:使用邮件发送协议SMTP来发送邮件到来发送邮件到接收服务器,又称为接收服务器,又称为SMTP服务器。服务器。接收邮件服务器:使用邮件接收协议接收邮件服务器:使用邮件接收协议POP3或者或者IMAP协协议接收邮件,又称为议接收邮件,又称为POP3服务器或者服务器或者IMAP服务器。服务器。计算机科学与技术学院网络工程教研室一、因特网电子邮件系统的组成一、因特网电子邮件系统的组成二、常用的邮件协议3.简单邮件传

35、输协议简单邮件传输协议SMTPu使用使用TCP可靠数据传输服务,在端口可靠数据传输服务,在端口25进行监听,将邮进行监听,将邮件从发送方的邮件服务器发送到接收方的邮件服务器。件从发送方的邮件服务器发送到接收方的邮件服务器。uSMTP的两个组成部分:的两个组成部分:SMTP客户端:当一个邮件服务器向其他邮件服务器发送客户端:当一个邮件服务器向其他邮件服务器发送邮件时,表现为邮件时,表现为SMTP客户机。客户机。SMTP服务器:当一个邮件服务器从其他邮件服务器接收服务器:当一个邮件服务器从其他邮件服务器接收邮件时,表现为一个邮件时,表现为一个SMTP的服务器。的服务器。计算机科学与技术学院网络工程

36、教研室二、协议简介二、协议简介二、常用的邮件协议1.简单邮件传输协议简单邮件传输协议SMTPuSMTP邮件传送过程:第一步邮件传送过程:第一步客户端发送客户端发送MAIL命令,代表发送邮件的开始。服务器则命令,代表发送邮件的开始。服务器则以以250OK作为响应,表明准备接收。作为响应,表明准备接收。MAIL命令的一般格式为:命令的一般格式为:MAILFROM:reverse-pathCRLFreverse-path为发送者邮箱地址,如为发送者邮箱地址,如。CRLF为回车、换行符。为回车、换行符。SMTP命令均以命令均以CRLF作为结束作为结束计算机科学与技术学院网络工程教研室二、协议简介二、协

37、议简介二、常用的邮件协议1.简单邮件传输协议简单邮件传输协议SMTPuSMTP邮件传送过程:第二步邮件传送过程:第二步客户端发送客户端发送RCPT命令,以标识该电子邮件的接收者,可命令,以标识该电子邮件的接收者,可以有多个以有多个RCPT。RCPT命令的一般格式为:命令的一般格式为:RCPTTO:forward-pathCRLFforward-path为各个邮件接收者的地址。为各个邮件接收者的地址。如果命令被接收,服务器发送如果命令被接收,服务器发送250OK作为响应;作为响应;若接收者地址无效则返回若接收者地址无效则返回550Failure作为响应。作为响应。计算机科学与技术学院网络工程教研

38、室二、协议简介二、协议简介二、常用的邮件协议1.简单邮件传输协议简单邮件传输协议SMTPuSMTP邮件传送过程:第三步邮件传送过程:第三步用用DATA命令发送邮件。此时客户端在命令发送邮件。此时客户端在DATA命令成功后命令成功后向服务器发送邮件内容向服务器发送邮件内容如果服务器接收到如果服务器接收到DATA命令,则向客户端发送命令,则向客户端发送354应答应答作为响应。此时客户端在接收到这个响应后需立即发送包作为响应。此时客户端在接收到这个响应后需立即发送包含邮件的文本信息。含邮件的文本信息。SMTP协议规定邮件以一个只包含一个句号协议规定邮件以一个只包含一个句号“.”的行作的行作为邮件结束

39、。当服务器接收到这样一行后,结束邮件内容为邮件结束。当服务器接收到这样一行后,结束邮件内容的接收并以的接收并以250OK作为响应。作为响应。计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议1.简单邮件传输协议简单邮件传输协议SMTPuSMTP邮件发送过程邮件发送过程Server:220SMTPserviceready服务器已准备好服务器已准备好。Client:HELOmypc主机主机mypc要与服务器交互信息要与服务器交互信息Server:250sayshellotomypc服务器同意与服务器同意与mypc交互信息交互信息Client:MAILFROM:发送邮件(发

40、送者地址)发送邮件(发送者地址)Server:250senderOKokClient:RCPTTO:接收者地址接收者地址Server:250recipientOKok计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议1.简单邮件传输协议简单邮件传输协议SMTPuSMTP邮件发送过程邮件发送过程Client:DATA开始发送邮件内容开始发送邮件内容Server:354sendmail;endwith“.”onalinebyitself同意发送邮件内容同意发送邮件内容Client:Hello,ImissyouverymuchServer:250messageaccept邮

41、件内容已接收完邮件内容已接收完Client:QUIT请求结束本次交互请求结束本次交互Server:221wgxclosingconnection同意结束本次交互。同意结束本次交互。计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议1.简单邮件传输协议简单邮件传输协议SMTPuSMTP邮件发送过程邮件发送过程计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议1.简单邮件传输协议简单邮件传输协议SMTPuSMTP的常用命令的常用命令命令命令功能描述功能描述DATA发送送邮件内容件内容EXPN在指定在指定邮件列表中返回名称件列表中返回名称HELLO

42、返回返回邮件服件服务器域名器域名HELP返回指定命令中的信息返回指定命令中的信息MAILFROM在主机上初始化一个在主机上初始化一个邮件会件会话QUIT终止止邮件会件会话计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议1.简单邮件传输协议简单邮件传输协议SMTPuSMTP的常用命令的常用命令命令命令功能描述功能描述RCPTTO:传送接收者的送接收者的邮箱名称箱名称RSET重重设邮件件连接接SAMLFROM发送送邮件到用件到用户终端和端和邮箱箱SENDFROM发送送邮件到用件到用户终端端SOMLFROM发送送邮件到用件到用户终端或端或邮箱箱VRFY校校验用用户身份身份

43、计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议1.简单邮件传输协议简单邮件传输协议SMTPuSMTP应答码应答码应答答码含含义描述描述211系系统状状态或系或系统帮助响帮助响应214帮助信息帮助信息220服服务就就绪221服服务关关闭传输通道通道250请求的求的邮件操作正常且完成件操作正常且完成251非本地用非本地用户,将被,将被转发到到计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议1.简单邮件传输协议简单邮件传输协议SMTPuSMTP应答码应答码应答答码含含义描述描述354开始开始输入入邮件信息,以件信息,以.结束束421服服务未就

44、未就绪,关,关闭传输通道通道450未完成未完成请求的求的邮件操作,件操作,邮箱繁忙箱繁忙451放弃要求的操作,放弃要求的操作,处理理过程中出程中出错452未完成未完成请求的求的邮件操作,系件操作,系统存存储空空间不足不足计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议1.简单邮件传输协议简单邮件传输协议SMTPuSMTP应答码应答码应答答码含含义描述描述500语法法错误,不,不认识命令命令501参数或参数或变量量错误502命令不可命令不可实现503错误的命令序列的命令序列504命令参数不可命令参数不可实现550未完成未完成请求的求的邮件操作,无件操作,无邮箱,箱,邮

45、箱无效箱无效计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议1.简单邮件传输协议简单邮件传输协议SMTPuSMTP应答码应答码应答答码含含义描述描述551非本地用非本地用户,请尝试552放弃要求的操作,放弃要求的操作,过量的存量的存储分配分配553未完成未完成请求的求的邮件操作,件操作,邮箱名箱名语法法错误554操作失操作失败计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议2.邮件访问协议邮件访问协议POP3第三版邮局协议第三版邮局协议IMAP因特网邮件访问协议因特网邮件访问协议HTTP计算机科学与技术学院网络工程教研室二、协议简介二、协

46、议简介二、常用的邮件协议2.邮件访问协议邮件访问协议u1)POP3第三版邮局协议第三版邮局协议:POP协议(协议(PostOfficeProtocol)又称邮局协议,它使工作)又称邮局协议,它使工作站可以从服务器上取得邮件,而服务器为它暂时保存邮件。站可以从服务器上取得邮件,而服务器为它暂时保存邮件。它运行于它运行于TCP之上,默认在之上,默认在110端口侦听。端口侦听。POP3协议适用于协议适用于Client/Server模式。它主要工作在离线方式下。模式。它主要工作在离线方式下。目前的邮件服务器基本上都支持通过目前的邮件服务器基本上都支持通过POP3协议接收。协议接收。POP3协议规定,邮

47、件客户端程序需要接收电子邮件时,它必协议规定,邮件客户端程序需要接收电子邮件时,它必须同须同POP3邮件服务器建立一个双向连接。邮件服务器建立一个双向连接。计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议2.邮件访问协议邮件访问协议-POP3第三版邮局协议第三版邮局协议1.建立连接阶段建立连接阶段用户代理打开一个到邮件用户代理打开一个到邮件服务器服务器110端口的端口的TCP连接连接后,后,POP3协议就开始工作。协议就开始工作。2.用户验证阶段用户验证阶段用户代理以明文形式传输用户代理以明文形式传输用户名和口令以鉴别用户。用户名和口令以鉴别用户。3.邮件操作阶段邮

48、件操作阶段取回报文,对邮件做或取消删除标记,取回报文,对邮件做或取消删除标记,获取邮件统计信息。获取邮件统计信息。4.断开连接阶段断开连接阶段客户机发出客户机发出quit命令结束该命令结束该POP会话,邮会话,邮件服务器删除那些被标记为删除的报文。件服务器删除那些被标记为删除的报文。POP3邮件服务器的应邮件服务器的应答码只有两种:答码只有两种:+OK和和-ERR。+OK表示正常表示正常-ERR表示错误。表示错误。计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议2.邮件访问协议邮件访问协议u2)IMAP协议协议uInternetMailAccessProtocol,

49、又称,又称Internet邮件访问协邮件访问协议,是更高级的用于接收邮件的协议。它对议,是更高级的用于接收邮件的协议。它对POP3的存储转的存储转发限制提供了重要的改进。发限制提供了重要的改进。计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议2.邮件访问协议邮件访问协议u传统电子邮件协议及其通信实体传统电子邮件协议及其通信实体用户代理用户代理邮件邮件服务服务器器邮件服务邮件服务器器用户代理用户代理撰撰写写邮邮件件SMTP报文发送队列中排队报文发送队列中排队TCP连接连接SMTP接收者接收者的邮箱的邮箱POP3,IMAP计算机科学与技术学院网络工程教研室二、协议简介二

50、、协议简介二、常用的邮件协议2.邮件访问协议邮件访问协议u3)HTTP基于基于Web的电子邮件,使用浏览器收发电子邮件。的电子邮件,使用浏览器收发电子邮件。浏览器浏览器邮件邮件服务服务器器邮件服务邮件服务器器浏览器浏览器撰撰写写邮邮件件HTTP报文发送队列中排队报文发送队列中排队TCP连接连接SMTP接收者接收者的邮箱的邮箱HTTP计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议3.MIME协议协议uMIMEMultipurposeInternetMailExtensionsandSecureMIME,多用途网际邮件扩充协议,多用途网际邮件扩充协议 。MIME不是邮

51、件传输协议,而是对邮件格式所做的规不是邮件传输协议,而是对邮件格式所做的规范。范。MIME说明了如何安排消息格式使消息在不同的邮件系统说明了如何安排消息格式使消息在不同的邮件系统内进行交换。内进行交换。MIME的格式灵活,允许邮件中包含任意类型的文件。的格式灵活,允许邮件中包含任意类型的文件。MIME消息可以包含文本、图象、声音、视频及其它应用程消息可以包含文本、图象、声音、视频及其它应用程序的特定数据。序的特定数据。计算机科学与技术学院网络工程教研室二、协议简介二、协议简介二、常用的邮件协议3.MIME协议协议u邮件首部行邮件首部行Client:From:Client:To:Subject:

52、报文首部之后紧接着一个空白行,然后是以报文首部之后紧接着一个空白行,然后是以ASCII格格式表示的报文主体。式表示的报文主体。SMTP要求每个报文都使用要求每个报文都使用7位位ASCII码,当报文中包含音频、视频码,当报文中包含音频、视频等非等非ASCII码格式的报文时,需要使用码格式的报文时,需要使用MIME协议中定义的附加首协议中定义的附加首部行。部行。Content-TypeContent-Transfer-Encoding计算机科学与技术学院网络工程教研室三、环境配置解压缩后,将其中的复制到解压缩后,将其中的复制到C:ProgramFilesJavajdk1.6.0_10jrelibe

53、xt中中2.JavaBeansActivationFramework:解压缩后,将其中的复制到解压缩后,将其中的复制到C:ProgramFilesJavajdk1.6.0_10jrelibext中中中的配置中的配置打开打开Properties对话框对话框-javaBuildpath-Libraries选项选项卡。卡。1)所需的)所需的jar包及其在包及其在MyEclipse中的配置中的配置计算机科学与技术学院网络工程教研室三、环境配置中的配置中的配置1)所需的)所需的jar包及其在包及其在MyEclipse中的配置中的配置计算机科学与技术学院网络工程教研室三、环境配置2)邮件服务器的安装)邮件

54、服务器的安装u安装一个本地邮件服务器:安装一个本地邮件服务器:merak配置本地邮件服务器配置本地邮件服务器merak,,安装过程安装过程按照默认的步骤安装即可按照默认的步骤安装即可安装到最后的步骤时,需要安装到最后的步骤时,需要Hostname,Domain,Username和和Password,填入如下信息:,填入如下信息:计算机科学与技术学院网络工程教研室u例题例题-1配置本地邮件服务器配置本地邮件服务器merakmerak二、例题二、例题Domain配置窗口:配置窗口:Hostname:Username:adminPassword:1234三、环境配置2)邮件服务器的安装)邮件服务器的

55、安装计算机科学与技术学院网络工程教研室启动启动merak开始开始所有程序所有程序-IceWarpMerakMailServer-Administration三、环境配置2)邮件服务器的安装)邮件服务器的安装计算机科学与技术学院网络工程教研室设置设置merakManagementUnknownAccouts选择选择Forwardto(Cache-all)三、环境配置2)邮件服务器的安装)邮件服务器的安装计算机科学与技术学院网络工程教研室2)邮件服务器的安装)邮件服务器的安装u例题例题-1设置设置merak二、例题二、例题这里改为这里改为imap三、环境配置计算机科学与技术学院网络工程教研室u例题例题-1更改虚拟更改虚拟SMTP的设置的设置不不进进行行此此项项设设置置,可可能能会会出出现现:SMTPserver response: 550 5.7.1 Unable torelayfor的错误的错误 三、环境配置2)邮件服务器的安装)邮件服务器的安装计算机科学与技术学院网络工程教研室四、小结和作业小结小结1.准备实验四程序准备实验四程序2.准备实验三程序,下周实验课抽查准备实验三程序,下周实验课抽查3.搭建搭建JavaMail环境环境

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号