书签 分享 收藏 举报 版权申诉 / 36
上传文档赚钱

类型网际网路程式设计课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4149226
  • 上传时间:2022-11-14
  • 格式:PPT
  • 页数:36
  • 大小:524KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《网际网路程式设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    网际 网路 程式 设计 课件
    资源描述:

    1、Visual Basic 2005網際網路程式設計Chpater 99-1 POP3介紹nSMTP用以傳送郵件的通訊協定,其外寄郵件伺服器(Outgoing Mail Server)的預設通訊埠為25,而POP3(Post Office Protocol version 3)則是用以接收郵件的通訊協定,其內送郵件伺服器(Incoming Mail Server)的預設通訊埠為110。n在流程的處理上,與SMTP通訊協定最大的不同在於,SMTP嚴格來說,只有郵件交易(Transaction)過程,並沒有使用者認證(Authorization)的過程,也就是說使用SMTP傳送郵件時,並不需要使用者

    2、帳號及密碼,便可透過具有SMTP服務的郵件伺服器,傳送郵件。n但POP3則不同,若接收郵件時,不需要使用者帳號及密碼的確認,那麼不是任何人都可以讀取別人的郵件了嗎?因此,Client端透過POP3通訊協定至郵件伺服器讀取郵件時,必須經過使用者認證(Authorization)過程,方可取得郵件。nPOP3的流程共分為以下三個階段:1.AUTHORIZATION:使用者認證。2.TRANSACTION:處理郵件交易。3.UPDATE:依據TRANSACTION流程之定義,更新郵件信箱。n以下為收件端連結至郵件伺服器收取郵件過程的內容,為區別起見,在每一行的起頭加上“S:”與“C:”,以代表Ser

    3、ver端與Client端之訊息。(Connection)C:Trying to connect to host .tw,port:110C:Connecting to .tw,port:110S:+OK hello from popgate(AUTHORIZATION)C:USER leohkkimoS:+OK password required.C:PASS passwordS:+OK maildrop ready,9 messages(148129 octets)(1095572 10485760)(TRANSACTION)C:STAT S:+OK 9 148129 C:RETR 1 S:

    4、+OK 548 octets S:Date:Thu,03 May 2001 16:34:27 CST S:From:Leo Huang S:Reply-To:Leo Huang S:Subject:POP3 Mail via SocketS:To:.twS:MIME-Version:1.0S:Content-Transfer-Encoding:8bitS:Content-Type:text/plain;charset=Big5S:Message-ID:S:S:This is an example to receive the mail S:based on POP3 protocol.S:Le

    5、oS:S:.C:RETR 2S:+OK 4906 octetsS:.(AUTHORIZATION/UPDATE)C:QUITS:+OK dewey POP3 server signing offn不論是那一個階段,RFC均定義了Client所傳送指令的格式以及Server端回應之內容,與SMTP相比較,POP3的指令內容則較為簡單,分別為:1.Client端所傳送的指令,必須CRLF為結尾。2.Server端所回應的訊息不似SMTP之複雜(不含三碼數字),只有兩種情況:+OK:代表指令執行正確。-ERR:代表指令執行錯誤。除此之外,在POP3每一階段中,均有相對的指令應用。9-1-1AUTHO

    6、RIZATIONn在AUTHORIZATION(使用者認證)階段中,共有以下幾種Client端指令:指令指令語法語法USERUSER PASSPASS QUITQUITn此階段的流程分別為:1.首先Client需與POP3郵件伺服器建立通訊連結,待連結建立後,伺服端會回傳以下之訊息,接著便需處理使用者認證程序:+OK hello from popgate+OK hello from popgate2.在認證程序中,首先Client端以USER指令傳送使用者在POP3郵件伺服器上所註冊的登錄帳號,以確認使用者身份,若帳號存在,Server端會回傳+OK之訊息,否則回傳-ERR訊息,以下是USER

    7、指令的處理範例:USER leohuangUSER leohuang+OK password required.+OK password required.USER abcdUSER abcd-ERR invalid user.-ERR invalid user.3.待登錄帳號確認後,Client端需以PASS指令傳送此登錄帳號之密碼,同樣地,若密碼正確,Server端會回傳+OK之訊息,否則回傳-ERR訊息,以下是PASS指令的處理範例。待密碼確認後,便可開始處理郵件接收的交易(Transaction):PASS password+OK maildrop ready,9 messages(1

    8、48129 octets)(1095572 10485760)PASS abcd-ERR invalid password4.AUTHORIZATION階段的最後一個指令則是QUIT(註),當郵件交易處理完畢時,Client端便發送QUIT指令至郵件伺服器中斷連結,以下是QUIT指令的處理範例:QUIT+OK dewey POP3 server signing offn下圖為AUTHORIZATION階段的流程整理:9-1-2TRANSACTIONn在TRANSACTION(郵件交易)階段中,共有以下幾種Client端指令:指令指令語法語法STATSTATLISTLIST mail#RETRR

    9、ETR DELEDELENOOPNOOPRSETRSET1.STAT:說明郵件交易的開始,Client端會傳送STAT指令至郵件伺服器,以便瞭解使用者信箱(INBOX)中郵件數目及大小,其中第一碼數字代表郵件數目,第二碼代表所有郵件的大小,其單位為octet(八位元組),例如:STAT+OK 9 1481292.LIST:LIST指令有兩種功能,若沒有參數,代表依序列出每一封郵件的大小(單位為octet)。若希望瞭解某一封郵件的大小,則以郵件序號為LIST指令的參數,需注意的是,郵件序號是由1開始,例如:LIST+OK 2 messages(320 octets)1 1202 200.LIST

    10、 2+OK 2 200LIST 3-ERR no such message,only 2 messages in maildrop3)RETR:為Retrieve(取得)的縮寫,用以取得郵件內文,包括郵件標題(Header)及郵件內容(Content)。若指令執行成功,Server端會先回傳+OK訊息,告知Client端此郵件大小(單位為octet),接著則依序傳送郵件標題及內容。如何判斷標題、內容及郵件結尾呢?POP3通訊協定在傳送郵件內文時,是依下圖的順序傳送標題與內容,其中標題與內容之間會以空行隔開,並以.CRLF(.rn)為郵件結尾。致於標題中各行的順序,則會依郵件伺服器的不同而有所差

    11、異,以下為RETR指令的範例:RETR 1+OK 548 octets Date:Thu,03 May 2001 16:34:27 CST From:Leo Huang Reply-To:Leo Huang Subject:POP3 Mail via Socket To:.tw MIME-Version:1.0 Content-Transfer-Encoding:8bit Content-Type:text/plain;charset=Big5 Message-ID:This is an example to receive the mail based on POP3 protocol.Le

    12、o 4.DELE:為Delete(刪除)的縮寫,用以刪除郵件。執行本指令,只是註記(Mark)郵件已被刪除,但實際上,並未真正自郵件信箱中永久移除,必須等到執行QUIT指令,Client端與Server端結束連結時,才會真正地永久移除,因此郵件軟體通常會在執行結束時,詢問使用者確認刪除的動作。以下為DELE指令的範例:DELE 1+OK message 1 deletedDELE 1-ERR message 1 already deleted5.NOOP:為No Operation的縮寫,執行此指令,Server端僅會回傳+OK的訊息。6.RSET:用以取消被註記刪除的郵件,例如:DELE 1

    13、+OK message 1 deletedRSET+OK maildrop has 2 messages(320 octets)除了上述指令之外,有些POP3伺服器也支援TOP指令。7.TOP:用以回傳郵件標題及指定行數的內容,其語法為:TOP line#其中:mail#:代表郵件序號,此郵件序號不能被註記為刪除。line#:回傳郵件內容(Content)的行數。例如:TOP 1 0+OK 548 octetsDate:Thu,03 May 2001 16:34:27 CST From:Leo Huang Reply-To:Leo Huang Subject:POP3 Mail via Soc

    14、ket To:.tw MIME-Version:1.0 Content-Transfer-Encoding:8bit Content-Type:text/plain;charset=Big5 Message-ID:n下圖為TRANSACTION階段的流程整理:9-1-3UPDATE n當Client端執行QUIT指令與Server端結束通訊連結時,則進入POP3的最後階段 UPDATE,最主要是將在TRANSACTION階段中,被DELE指令刪除的郵件,自郵件信箱中永久移除。n此階段沒有任何指令,例如:QUIT+OK dewey POP3 server signing off9-2POP3 C

    15、lient Scoketn欲以VB.NET所提供的System.Net.Sockets.Socket類別透過POP3通訊協定接收郵件,需依照上一節所說明的POP3流程及階段,建立與郵件伺服器的通訊連結,並依序傳送相關指令至伺服器。參考範例9-1 POP3.sln n首先Client端以System.Net.Sockets.Socket類別與POP3郵件伺服器建立Socket通訊連結:範例9-1 POP3.sln程式說明 IpHost=System.Net.Dns.Resolve(strHost)IPAdd=IpHost.AddressList(0)IPEndAdd=New System.Net

    16、.IPEndPoint(IPAdd.Address,_ Int32.Parse(strPort)嘗試與郵件伺服器建立連結pop3Socket.Connect(IPEndAdd).郵件伺服器回傳+OK hello from popgate 訊息?If Not POP3Response()Then Return Falsen其中自訂其中自訂POP3Response函式為:函式為:Private Function POP3Response()As Boolean Dim RecvBytes(256)As Byte Dim strResponse As String=Nothing Dim bytes

    17、 As Int32 Try bytes=pop3Socket.Receive(RecvBytes,RecvBytes.Length,0)strResponse=Encoding.ASCII.GetString(RecvBytes,0,bytes).If Not strResponse.StartsWith(+OK)Then .pop3Socket.Shutdown(SocketShutdown.Both)pop3Socket.Close()Return False Else Return True End If Catch ex As Exception .pop3Socket.Shutdow

    18、n(SocketShutdown.Both)pop3Socket.Close()Return False End TryEnd Functionn接著便需處理使用者認證的流程(AUTHORIZATION),依序由Client端傳送下列訊息至郵件伺服器,並同時處理伺服器所回傳的訊息以判斷是否正確:USERstrMsg=USER&strUserIf(Not POP3Request(strMsg)Then Return False 郵件伺服器回傳郵件伺服器回傳+OK password required 訊息訊息?If(Not POP3Response()Then Return False PASSs

    19、trMsg=PASS&strPassIf(Not POP3Request(strMsg)Then Return False 郵件伺服器回傳郵件伺服器回傳+OK maildrop ready,.messages 訊息訊息?If(Not POP3Response()Then Return False STATstrMsg=STATIf(Not POP3Request(strMsg)Then Return False 郵件伺服器回傳郵件伺服器回傳+OK bytes=pop3Socket.Receive(RecvBytes,RecvBytes.Length,0)strResponse=Encoding

    20、.ASCII.GetString(RecvBytes,0,bytes)If(Not strResponse.StartsWith(+OK)Then Return FalseEnd If+OK Dim strTemp()As StringstrTemp=strResponse.Split()totalMail=Int32.Parse(strTemp(1).Trim)mailSize=Int32.Parse(strTemp(2).Trim)n其中自訂POP3Request函式為:Private Function POP3Request(ByVal strMsg As String)As Boole

    21、an Dim byteMsg()As Byte strMsg=strMsg&ControlChars.CrLf Try byteMsg=Encoding.ASCII.GetBytes(strMsg.ToCharArray()pop3Socket.Send(byteMsg,byteMsg.Length,SocketFlags.None).Return True Catch ex As Exception .pop3Socket.Shutdown(SocketShutdown.Both)pop3Socket.Close()Return False End TryEnd Functionn認證成功之

    22、後,便可處理接收郵件交易(TRANSACTION)。n程式中,由Client端透過輸入資料流傳送RETR指令至Server端,待Server端回傳訊息,便讀取郵件標題及內容,其中藉由“.”判斷郵件內容結尾。9-3POP3 Client TcpClientn開發POP3 Client端應用程式,除了使用System.Net.Sockets.Socket類別之外,另外亦可使用System.Net.Sockets.TcpClient類別處理,其開發流程為:1.首先Client端以TcpClient類別與POP3郵件伺服器建立Socket通訊連結,可使用TcpClient類別的Connect方法以建立

    23、用戶端與伺服端的連線,其方法如下:Public Sub Connect(remoteEP As IPEndPoint)Public Sub Connect(address As IPAddress,port As Integer)Public Sub Connect(hostname As String,port As Integer)Public Sub Connect(ipAddress As IPAddress(),port As Integer)參數分別為:remoteEP:伺服端IP Address與通訊埠號。address:指定伺服端的IP Address,為System.Net.

    24、IPAddress類別形式。hostname:指定伺服端的主機名稱。port:設定伺服端所提供之Internet服務的通訊埠號。例如:Dim pop3Socket As New System.Net.Sockets.TcpClient()pop3Socket.Connect(strHost,Int32.Parse(strPort)2.建立用戶端與伺服端資料傳送接收的輸出入資料流(Input/Output Stream):所建立的TcpClient物件,代表用戶端與伺服端之連線,可藉由TcpClient類別的GetStream方法取得用戶端的輸出入資料流:Public Function GetS

    25、tream()As NetworkStream例如:Dim networkStream As StreamnetworkStream=pop3Socket.GetStream()3.接著便以NetworkStream類別的Write方法依序由Client端傳送下列訊息至郵件伺服器,並同時以NetworkStream類別的Read方法處理伺服器所回傳的訊息以判斷是否正確。USER leohuang+OK password required.PASS password+OK maildrop ready,.STAT+OK.LIST+OK.messages(.octets).RETR 1+OK.oc

    26、tets.nClient端傳送訊息至郵件伺服器:Dim byteMsg()As ByteTry byteMsg=Encoding.ASCII.GetBytes(.)networkStream.Write(byteMsg,0,byteMsg.Length).Catch ex As Exception .End Tryn郵件伺服器回傳訊息至Client端:Dim bytes(pop3Socket.ReceiveBufferSize)As ByteDim strResponse As String=NothingTry networkStream.Read(bytes,0,CInt(pop3Socket.ReceiveBufferSize)strResponse=Encoding.ASCII.GetString(bytes).Catch ex As Exception .End Try4.當郵件傳送完畢時,需以TcpClient類別的Close方法關閉Client端與POP3郵件伺服器之Socket連結,例如:pop3Socket.Close()參考範例9-2 POP3.sln E N D

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:网际网路程式设计课件.ppt
    链接地址:https://www.163wenku.com/p-4149226.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库