嵌入式系统中SMTP协议的通讯实现
4.SMTP服务器端的实现:
服务器端主要的功能是通过TCP流的套接字服务,在启动后创建"监听"套接字,并将其绑定在为SMTP保留的端口上,接收连接处理。
int main(int artc, char **argv) {
// 初始化链接套接字
bind (listenfd, (struct sockadd*)&servaddr, sizeof(servaddr));
// 进入循环
for (; ;) {
connfd = accept(listenfd, (struct sockaddr*)&cliaddr, &clilen);
if (connfd >0) {
// 在该函数中进行SMTP协议相关的处理工作
handleConnection(connfd);
close(connfd);
}
}
close(listenfd);
}
在函数 handleConnection 中按照SMTP协议元素分析由客户端发送过来的HELO, MAIL FROM, RCPT TO, DATA, 和QUIT 等命令并作出相应的数据处理,然后对客户端作出相应的应答。客户端和服务器端对于命令应答的方式都是固定的,应答内容则随应用的不同而存在差别,这里就不必要进行讨论了。
SMTP服务器端需要考虑的问题:
除了通常的文本信息的传输外,在email中还有额外的附件传输的支持,这可以通过content-type区分是包含了普通的文本信息还是包含了多媒体信息。由于email传输只能支持7位二进制数编码的文本信息,所以对多媒体和其他非文本信息就必需通过其他的编码转换来解决,这里在嵌入式系统中考虑和使用的一般为Base64编码方案,这个编码方案是使用3个8位字节变成4个6位字节来解决多媒体信息变换为文本信息的问题,不过这样有一个不可避免的问题,就是编码转换后的信息流比原始编码流大33%。不过SMTP是个弹性的协议,可以使用任何的带宽,并且Base64这种编码机制为Email中传输二进制数据提供了手段。
5.小结:
对嵌入式设备发送Email的能力以及通过SMTP协议对数据进行传输在许多的领域中都用途广泛,尤其是软件更新方面。在科技快速发展的今天,嵌入式产品将会越来越多地被广泛应用。越来越多的嵌入式产品必将更加深入的走进人们的生活之中。
参考文献:
1.Abraham Operating System Concepts, 6th Edition, Wiley publisher
2.Michael Barr Programming embedded system in C and C++ , O’reilly publisher
3.W Richard Stevens TCP/IP illustrated Volume one:Protocol, 机械工业出版社
4.王超,胡晨 嵌入式系统中HTTP协议的实现, 电子器件 2002。3
5.张晶,曾宪云 嵌入式系统概述,电测与仪表 2002。4
- SIP协议简介(05-07)
- 嵌入式系统的定义与发展历史(11-15)
- 嵌入式系统亲密接触(11-22)
- 嵌入式系统设计中的USB OTG方案(02-01)
- 一个典型的嵌入式系统设计和实现 (02-02)
- DDR SDRAM在嵌入式系统中的应用(02-07)