freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

計算機網(wǎng)絡(luò)課程設(shè)計報告-利用c實現(xiàn)smtp協(xié)議(已修改)

2025-11-09 22:59 本頁面
 

【正文】 計算機網(wǎng)絡(luò)課程設(shè)計報告 利用 C++實現(xiàn) SMTP 協(xié)議 系 別 電子信息系 專業(yè)名稱 計算機科學與技術(shù) 班級學號 學生姓名 指導教師 成 績 2020 年 7 月 12 日 東 北大學秦皇島分校課程設(shè)計 第 1 頁 利用 C++實現(xiàn) SMTP 協(xié)議 SMTP(Simple Mail Transfer Protocol)即 簡單郵件傳輸協(xié)議 ,是一種提供可靠且有效 電子郵件 傳輸?shù)膮f(xié)議。 SMTP 是建立在 FTP 文件傳輸服務(wù) 上的一種郵件服務(wù),主要用于傳輸系統(tǒng)之間的郵件信息 并提供與來信有關(guān)的通知。 SMTP 目前已是事實上的在 Inter 傳輸 EMail 的標準,是一個相對簡單的基于文本的協(xié)議。在其之上指定了一條消息的一個或多個接收者(在大多數(shù)情況下被確定是存在的),然后消息文本就傳輸了??梢院芎唵蔚赝ㄟ^ Tel 程序來測試一個 SMTP 服務(wù)器, SMTP 使用 TCP 端口 25。要為一個給定的域名決定一個 SMTP 服務(wù)器,需要使用 MX(Mail eXchange) DNS。 。 設(shè) 計題目及實現(xiàn)目標 設(shè)計題目:利用 C++實現(xiàn) SMTP 協(xié)議; 實現(xiàn)目標:實現(xiàn) SMTP 協(xié)議的基本功能,包括客戶機的命令與數(shù)據(jù)。 開發(fā)環(huán)境簡介 本次開發(fā)用 Visual C++ 作為開發(fā)環(huán)境 。 VC++是微軟公司開發(fā)的一個 IDE(集成開發(fā)環(huán)境 ),換句話說 ,就是使用 c++的一個開發(fā)平臺 .有些軟件就是這個編出來的 ...另外還有 VB, .但是 ,vc++是Windows 平臺上的 C++編程環(huán)境,學習 VC 要了解很多 Windows 平臺的特性并且還要掌握 MFC、 ATL、 COM 等的知識,難度比 較大。 Windows 下編程需要了解 Windows的消息機制以及回調(diào)( callback)函數(shù)的原理; MFC 是 Win32API的包裝類,需要理解文檔視圖類的結(jié)構(gòu),窗口類的結(jié)構(gòu),消息流向等等; COM 是代碼共享的二進制標準,需要掌握其基本原理等等。 VC 作為一個主流的開發(fā)平臺一直深受編程愛好者的喜愛,但是很多人卻對它的入門感到難于上青天,究其原因主要是大家對他錯誤的認識造成的,嚴格的來說 VC++不是門語言,雖然它和 C++之間有密切的關(guān)系 ,如果形象點比喻的話,可以 C++看作為一種 ”工業(yè)標準 ”,而 VC++則是某種操作 系統(tǒng)平臺下的 ”廠商標準 ”,而 ”廠商標準 ”是在遵循 ”工業(yè)標準 ”的前提下擴展而來的。 VC++應用程序的開發(fā)主要有兩種模式 協(xié)議分析 SMTP 獨立于特定的傳輸子系統(tǒng),且只需要可靠有序的數(shù)據(jù)流信道支持。 SMTP 重要特性之一是其能跨越 網(wǎng)絡(luò)傳輸 郵件,即 “ SMTP 郵件中繼 ”。通常, 一個網(wǎng)絡(luò)可以由公用 互聯(lián)網(wǎng) 上 TCP 可相互訪問的 主機 、防火墻分隔的 TCP/IP 網(wǎng)絡(luò)上 TCP 可相互訪問的主機,及其它 LAN/WAN 中的主機利用非 TCP 傳輸層 協(xié)議組成。使用 SMTP ,可實現(xiàn)相同網(wǎng)絡(luò)上處理機之間的郵件傳輸,也可通過中繼器或 網(wǎng)關(guān) 實現(xiàn)某處理機與其它網(wǎng)絡(luò)之間的郵件傳輸。 SMTP 協(xié)議工作原理 東 北大學秦皇島分校課程設(shè)計 第 2 頁 SMTP 是工作在兩種情況下:一是 電子郵件 從客戶機傳輸?shù)椒?wù)器:二是從某一個服務(wù)器傳輸?shù)搅硪粋€服務(wù)器。 SMTP 也是個請求 /響應協(xié)議,命令和響應都是基于ASCⅡ 文本,并以 CR 和 LF 符結(jié)束。響應包括一個表示返回狀態(tài)的三位數(shù)字代碼。SMTP 在 TCP 協(xié)議 25 號 端口監(jiān)聽 連續(xù)請求。 連接和發(fā)送過程如下: ( 1)建立 TCP 連接。 ( 2)客戶端發(fā)送 HELO 命令以標識發(fā)件人自己的身份,然后客戶端發(fā)送 MAIL 命令;服務(wù)器端正希望以 OK 作為響應,表明準備接收。 ( 3)客戶端發(fā)送 RCPT 命令,以標識該電子郵件的計劃接收人,可以有多個 RCPT 行;服務(wù)器端則表示是否愿意為收件人接收郵件。 ( 4)協(xié)商結(jié)束,發(fā)送郵件,用命令 DATA發(fā)送。 ( 5)以 “.”號表示結(jié)束輸入內(nèi)容一起發(fā)送出 去,結(jié)束此次發(fā)送,用 QUIT 命令退出。 服務(wù)器端相關(guān)代碼: 1)、相關(guān)核心代碼如下: // : implementation file include include include include include fstream // CSMTPSeverDlg message handlers BOOL CSMTPSeverDlg::OnInitDialog() { CDialog::OnInitDialog()。 // Add About... menu item to system menu. // IDM_ABOUTBOX must be in the system mand range. ASSERT((IDM_ABOUTBOX amp。 0xFFF0) == IDM_ABOUTBOX)。 ASSERT(IDM_ABOUTBOX 0xF000)。 CMenu* pSysMenu = GetSystemMenu(FALSE)。 if (pSysMenu != NULL) { CString strAboutMenu。 (IDS_ABOUTBOX)。 if (!()) { pSysMenuAppendMenu(MF_SEPARATOR)。 pSysMenuAppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu)。 } } // Set the icon for this dialog. The framework does this automatically // when the application39。s main window is not a dialog SetIcon(m_hIcon, TRUE)。 // Set big icon SetIcon(m_hIcon, FALSE)。 // Set small icon // TODO: Add extra initialization here IsDataContent = FALSE 。 IsShow = FALSE 。 (this)。 (this)。 東 北大學秦皇島分校課程設(shè)計 第 3 頁 return TRUE。 // return TRUE unless you set the focus to a control } void CSMTPSeverDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID amp。 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout。 ()。 } else { CDialog::OnSysCommand(nID, lParam)。 } } void CSMTPSeverDlg::OnAccept() { CString str。 (*** 收到連接請求 )。 (1,str)。 if((m_Server)) { (*** 建立連接 )。 (1,str)。 str = _T(220 Simple Mail Sever Ready for Mail\r\n)。 ((LPCTSTR)str,())。 str = _T(S: )+str。 (1,str)。 (FD_READ)。 } else ()。 } void CSMTPSeverDlg::OnReceive() { char buff[65536]。 char local_host[80]。 int nRead。 memset(buff,0,65536)。//清空緩沖區(qū)接收數(shù)據(jù) nRead = (buff, 65536)。 //根據(jù)讀到的長度 switch (nRead) { case 0: ()。 break。 case SOCKET_ERROR: if (GetLastError() != WSAEWOULDBLOCK) { AfxMessageBox (Error occurred)。 ()。 } break。 default: buff[nRead] =0。 //terminate the string CString szTemp。 if(IsDataContent) { while(strstr(buff,\r\n.\r\n)==NULL) { 東 北大學秦皇島分校課程設(shè)計 第 4 頁 str+=buff。 memset(buff,0,65536)。 nRead = (buff, 65536)。 } str+=buff。 CString Temp 。 (%s\r\n\r\n,(LPCTSTR)())。 (Temp)。 Base64_decode(Temp)。 szTemp = _T(250 Message accepted for delivery\r\n)。 (szTemp,())。 szTemp = _T(S: )+szTemp。 (1,szTemp)。 ()。 IsDataContent=FALSE。 } if(strnicmp(buff,HELO,4)==0) { szTemp = buff。 szTemp = _T(C: )+szTemp。 //(1,(LPCTSTR)buff)。 (1,(LPCTSTR)szTemp)。 gethostname(local_host,80)。 (_T(250 OK %s\r\n),local_host)。 ((LPCTSTR)szTemp,())。 szTemp = _T(S: )+szTemp。 (1,szTemp)。 ()。 } if(strnicmp(buff,MAIL FROM:,10)==0) { szTemp = buff。 szTemp = _T(C: )+szTemp。 //(1,(LPCTSTR)buff)。 (1,(LPCTSTR)szTemp)。 szTemp = _T(250 Sender OK\r\n)。 (szTemp,())。 szTemp = _T(S: )+szTemp。 (1,szTemp)。 ()。 } if(strnicmp(buff,RCPT TO:,8)==0) { szTemp = buff。 szTemp = _T(C: )+szTemp。 //(1,(LPCTSTR)buff)。 (1,(LPCTSTR)szTemp)。 szTemp = _T(250 Receiver OK\r\n)。 (szTemp,())。 szTemp = _T(S: )+szTemp。 (1,szTemp)。 ()。 } if(strnicmp(buff,DATA,4)==0) { szTemp = buff。 szTemp = _T(C: )+szTemp。 //(1,(LPCTSTR)buff)。 (1,(LPCTSTR)szTemp)。 szTemp = _T(354 Go ahead. End
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1