色另类_婷婷激情四月_亚洲精品无码不卡在线播放he_欧美第七页_精品国产综合区久久久久99_青娱乐极品盛宴在线

產(chǎn)品分類

當(dāng)前位置: 首頁 > 人物訪談

利用電子郵件實現(xiàn)與網(wǎng)絡(luò)嵌入式系統(tǒng)的通信

發(fā)布日期:2022-07-15 點(diǎn)擊率:22

ay: block;">

隨著網(wǎng)絡(luò)嵌入式系統(tǒng)應(yīng)用的普及,嵌入式系統(tǒng)之間的通信成為工程師關(guān)注的焦點(diǎn)之一。除了API或HTTP協(xié)議等傳統(tǒng)方式外,電子郵件也可以用來進(jìn)行數(shù)據(jù)通信,本文描述了一個用于接收信息的小型SMTP服務(wù)器以及發(fā)送回函的客戶程序來說明電子郵件通信方式的應(yīng)用。

通過電子郵件來與網(wǎng)絡(luò)嵌入式系統(tǒng)通信有如下優(yōu)點(diǎn):(1) 用戶接口是日常使用的標(biāo)準(zhǔn)電子郵件客戶程序,對技術(shù)要求較低;(2) 有現(xiàn)成的協(xié)議用于從各種設(shè)備(桌面電腦、手持設(shè)備及網(wǎng)絡(luò)電話)發(fā)送電子郵件并在因特網(wǎng)上傳輸;(3) 只需稍加處理,便可對嵌入式設(shè)備上回復(fù)的電子郵件以HTML格式進(jìn)行編碼,使數(shù)據(jù)的表現(xiàn)形式更為豐富和易讀;(4) 電子郵件客戶程序有自己的存檔日志,便于進(jìn)行數(shù)據(jù)歸檔備份。

郵件系統(tǒng)的組成利用電子郵件實現(xiàn)與網(wǎng)絡(luò)嵌入式系統(tǒng)的通信 - 1

在用因特網(wǎng)發(fā)送郵件時,我們使用郵件用戶代理(MUA)與本地的郵件傳輸代理(MTA)進(jìn)行通信,后者則將電子郵件傳送給目標(biāo)MTA。目標(biāo)MTA通過一個本地投遞服務(wù)器(如POP3)將電子郵件傳送給接收MUA,如圖1所示。

客戶與MTA間傳送電子郵件的協(xié)議稱為簡單郵件傳輸協(xié)議(SMTP),它的具體條款可在RFC-821中找到。目的MTA接收到郵件,該郵件暫存在接收系統(tǒng)上,郵件接收者可通過POP3將之收集下來(郵局協(xié)議)。通過郵局協(xié)議可避免在每個需要接收郵件的節(jié)點(diǎn)上建立一個SMTP服務(wù)器。

協(xié)議會話示例

SMTP是一種其于ASCII的簡單協(xié)議,可通過標(biāo)準(zhǔn)的遠(yuǎn)程登錄客戶程序執(zhí)行。MTA寄存在端口25上,程序1是一段與稱為Sendmail(紅色顯示部分為用戶輸入)標(biāo)準(zhǔn)MTA的互動會話示例。

通過遠(yuǎn)程登錄打開一個Socket會話后,先通過HELO指令表明身份,然后再通過MMAIL FROM指令告知MTA郵件從何而來,并通過RCPT TO指令表明郵件去向何處。最后,發(fā)出DATA指令指示MTA以下文本內(nèi)容是電子郵件的正文。在正文中輸入內(nèi)容后,通過一個簡單的“.”來結(jié)束郵件,這個符號獨(dú)占一行。這時MTA便準(zhǔn)備將電子郵件發(fā)送給指定姓名的接收者。

這個示例所用功能極少,但作為例子已經(jīng)足夠了。它表明MTA只是一個特殊的命令解釋器。當(dāng)所有的命令都向MTA發(fā)出后,會返回一個數(shù)字響應(yīng)代碼,以便知道是否執(zhí)行成功。此外還有多種協(xié)議了采用這種模式,包括POP3和網(wǎng)絡(luò)新聞傳輸協(xié)議(NNTP)。

簡單SMTP服務(wù)器和客戶實現(xiàn)利用電子郵件實現(xiàn)與網(wǎng)絡(luò)嵌入式系統(tǒng)的通信 - 2

以下是一個適用于嵌入式系統(tǒng)的簡單實現(xiàn)。這個實現(xiàn)的目的是在SMTP傳輸系統(tǒng)中開發(fā)一個命令-響應(yīng)協(xié)議。服務(wù)器接收一個電子郵件,然后對它進(jìn)行語法分析,找出其中的指令(這種情況下,這個指令位于電子郵件的標(biāo)題欄中)。如果指令合法,就調(diào)用一個處理程序產(chǎn)生電子郵件的響應(yīng),該響應(yīng)傳送到客戶實現(xiàn)上,然后傳輸回去給用戶。整個系統(tǒng)如圖2所示。

嵌入式SMTP服務(wù)器的組件和客戶與圖1所示的傳統(tǒng)圖形有所不同。客戶MUA配置了一個SMTP網(wǎng)關(guān)(發(fā)出郵件服務(wù)器)作為嵌入式器件的地址(由于服務(wù)器既充當(dāng)MTU又充當(dāng)自動MUA)。嵌入式客戶采用SMTP GATEWAY #define(程序1)來定義從何處發(fā)送響應(yīng)電子郵件。

實現(xiàn)過程

主要功能(可從獲得完整的源代碼)提供了基本的服務(wù)器插座設(shè)置以便郵件連接。將插座綁定到端口25,即SMTP服務(wù)的標(biāo)準(zhǔn)端口。然后執(zhí)行一個循環(huán)等待連接,當(dāng)有客戶連接時調(diào)用MailReceive函數(shù)。為了簡化實現(xiàn),一次只處理一個連接。

MailReceive函數(shù)實現(xiàn)SMTP協(xié)議的服務(wù)器端功能,如實例程序2所示。MailReceive函數(shù)中的第一步是將初始化標(biāo)志發(fā)送給客戶程序,然后等待其響應(yīng)。接著順序等待接收“MAIL利用電子郵件實現(xiàn)與網(wǎng)絡(luò)嵌入式系統(tǒng)的通信 - 3

FROM”、“RCPT TO”及“DATA”命令,并存儲結(jié)果及發(fā)送相應(yīng)的返回碼。

接收郵件正文的操作十分簡單,只需將收到的字符緩存起來,直到接收到一個特殊的字符序列為止。客戶程序發(fā)送“.”(即該行只有一個“.”)表明郵件結(jié)束。這就表明消息已結(jié)束,并等待客戶發(fā)出“QUIT”命令。

這時存放郵件內(nèi)容的字符串?dāng)?shù)組中已接收到整個郵件原文。然后調(diào)用mailParse函數(shù)分析該數(shù)組,找出相關(guān)指令。

程序2中給出了mailParse函數(shù)的實現(xiàn)。該函數(shù)首先檢索“Subject:”字符串,如果找到則存儲相應(yīng)的標(biāo)題內(nèi)容。然后將標(biāo)題串與目標(biāo)所支持的命令(PING、SENSOR和RESET)相比較,并調(diào)用相應(yīng)的處理函數(shù)。

實例代碼中每個處理函數(shù)都包含了相同的基本處理過程。首先分配一個郵件標(biāo)題結(jié)構(gòu),根據(jù)希望提供的響應(yīng)填入該結(jié)構(gòu)的相關(guān)字段,然后調(diào)用mailSend函數(shù)發(fā)送郵件(參見示例程序3)。sendResponse 和processCommand函數(shù)的功能十分顯而易見。

函數(shù)sendSensorData略有不同,它發(fā)送的是HTML格式的文本。除了郵件正文不同外,其內(nèi)容類型標(biāo)志也不同:普通正文的內(nèi)容標(biāo)志為“text/plain”,而HTML格式的內(nèi)容標(biāo)志為“text/html”,表示郵件中可能包含HTML標(biāo)記。這些處理程序十分簡單,但可以進(jìn)行擴(kuò)展以支持任何電子郵件客戶程序所允許的嵌入標(biāo)記(包括圖象、聲音等數(shù)據(jù)的傳輸)。程序2:SMTP服務(wù)器。(點(diǎn)擊放大圖)

MailSend函數(shù)實現(xiàn)SMTP客戶端的協(xié)議處理。這基本上是服務(wù)器端代碼的反向處理。

另外值得注意的是客戶報頭文件,它定義了mailHeader結(jié)構(gòu)(見實例程序1)。該結(jié)構(gòu)中多數(shù)的字段都一目了然,其中一個特殊的字段是specialHeaders。如果電子郵件客戶程序把郵件中所有的標(biāo)題域都顯示出來,將發(fā)現(xiàn)許多不常見的內(nèi)容,多數(shù)都可在IETF的“通用互連網(wǎng)消息標(biāo)題”(RFC-2076)文檔中找到。通過specialHeaders字段可調(diào)整電子郵件的處理。例如可采用“Priority: Urgent”標(biāo)題注明郵件的重要性,或采用“Content-MD5:”標(biāo)題(以及相應(yīng)的校驗碼)來保證在傳遞過程中郵件的內(nèi)容未發(fā)生改變。

測試設(shè)置

實例代碼可在Linux上直接編譯并運(yùn)行。編譯前必須先配置兩個參數(shù)程序才能正常運(yùn)行(在client.h文件中)。

第一個參數(shù)是SMTP GATEWAY宏定義,它設(shè)定嵌入式SMTP客戶程序發(fā)送電子郵件的目標(biāo),一般是用戶有發(fā)送或接收帳號的SMTP網(wǎng)關(guān),或者是提供電子郵件中轉(zhuǎn)服務(wù)的網(wǎng)關(guān)。該參數(shù)可設(shè)為一個IP地址或一個域名(mailSend函數(shù)中的代碼具備域名解析功能)。

第二個可配置的參數(shù)是SOURCE_E-MAIL_ADDRESS,該參數(shù)并不十分關(guān)鍵,它表示回復(fù)郵件中“From:”字段的內(nèi)容(即發(fā)送方的標(biāo)志)。這些參數(shù)設(shè)置好以后,只需簡單地“Make”就可生成“Tinyms”可執(zhí)行程序鏡像。程序3:電子郵件信息剖析器。(點(diǎn)擊放大圖)

發(fā)出郵件的電子郵件桌面程序必須將其SMTP網(wǎng)關(guān)(或發(fā)送服務(wù)器)配置為嵌入式設(shè)備的IP地址。當(dāng)用軟件發(fā)送電子郵件時,無論接收方在哪里,郵件都要首先經(jīng)過預(yù)先設(shè)好的SMTP網(wǎng)關(guān)(即嵌入式設(shè)備)。嵌入式設(shè)備并不關(guān)心地址,它只是處理所有收到的郵件,并把回復(fù)內(nèi)容傳給發(fā)送方。注意標(biāo)題域(Subject:)的內(nèi)容是要執(zhí)行的命令(如SENSOR或者PING)。在列舉的實現(xiàn)中忽略了郵件的正文,但只需稍加修改舊可對正文進(jìn)行處理,因為整個郵件的原文都存放在字符數(shù)組中。

本文小結(jié)

現(xiàn)在可以向嵌入式設(shè)備發(fā)送電子郵件并獲得響應(yīng)了,但這只是一個最基本的配置,它給傳統(tǒng)的通信模式提供了一種有趣的替代。我們可對這一實現(xiàn)進(jìn)行多種擴(kuò)展,例如支持在電子郵件正文中嵌入XML消息(通過某種XML分析器);還可通過在接收或發(fā)送的郵件中附加Base64或“Quoted-Printable MIME”編碼/解碼處理功能來支持二進(jìn)制附件。利用后者可提供向嵌入式設(shè)備發(fā)送軟件更新或接收采集的二進(jìn)制數(shù)據(jù)的功能(在傳統(tǒng)的圖像等多媒體數(shù)據(jù)之外)。最后,不用任何額外的改變,就可由嵌入式設(shè)備在異常情況下發(fā)送電子郵件報警。

作者簡介:

M. Tim Jones是Emulex公司的軟件工程師。他從1986年到現(xiàn)在一直從事嵌入式軟件開發(fā),其范圍十分廣泛,從航空設(shè)備的操作系統(tǒng)內(nèi)核到地面嵌入式網(wǎng)絡(luò),無所不及。Tim獲得了計算機(jī)科學(xué)的學(xué)士和碩士學(xué)位。可通過mtj@與他聯(lián)系。

作者:M. Tim Jones


Emulex公司

下一篇: 下一代光傳輸協(xié)議概述

上一篇: 寬帶邊緣網(wǎng)設(shè)備要求更

主站蜘蛛池模板: 精品国产91 | 久久日本精品一区二区三区 | 国产污网站在线观看 | 五月久久婷婷综合片丁香花 | 国产精品偷拍 | 美日韩一区二区 | 国产精品视频播放 | 欧美在线视频免费看 | 91av视频在线 | 97精品国产高清久久久久蜜芽 | 日韩欧美一区二区三区四区 | 欧美福利在线 | 亚洲人成在线观看一区二区 | 黑人群姣中国妞在线观看 | 欧美高清一级片 | 日韩精品资源 | 成人在线免费看 | 91短视频版在线观看www免费 | 国产二区三区视频 | 伊人9999 | 精品视频久久 | 精品免费在线 | 欧美三级在线 | 青青草视频网 | 欧美国产中文字幕 | 男女激情网址 | 奇米网久久 | 热re91久久精品国产99热 | 久草在钱| 正在播放国产精品 | av黄色在线 | 欧美国产精品一区二区 | 欧美午夜视频 | 99热精品在线 | 亚洲国产免费 | 青青草一区 | 亚洲第一在线 | 日本无码成人片在线观看波多 | 色碰视频| 蜜臀AV性色A片在线观看 | 在线婷婷 |