2012-10-10 114 views
1

任何人都可以请帮助我使用UDP创建一个简单的基本电子邮件客户端和电子邮件服务器,并熟悉SMTP的工作方式?使用UDP的电子邮件客户端/服务器

我刚刚开始使用计算机网络,我只需要知道所涉及的步骤。

谢谢。

+2

这个问题太广泛而且不清楚。我可以回应的唯一有用的事情是电子邮件使用的SMTP协议不是UDP,而是基于TCP。 –

+0

相关:http://stackoverflow.com/questions/3765738/writing-a-simple-email-server。另外,使用UDP来发送电子邮件将是不明智的,因为UDP数据包可以被丢弃。 – QuasarDonkey

+0

这是一个编程任务。被告知只使用UDP。 – AbdullahTariq

回答

0

Internet RFC(请求注解)是此类信息的最佳来源:SMTP概述于RFC 821。好消息是SMTP是一种基于文本的协议,就像HTTP和朋友一样。

这里的客户C和服务器之间S为例对话(来源于维基百科):

S: 220 smtp.example.com ESMTP Postfix 
C: HELO relay.example.org 
S: 250 Hello relay.example.org, I am glad to meet you 
C: MAIL FROM:<[email protected]> 
S: 250 Ok 
C: RCPT TO:<[email protected]> 
S: 250 Ok 
C: RCPT TO:<[email protected]> 
S: 250 Ok 
C: DATA 
S: 354 End data with <CR><LF>.<CR><LF> 
C: From: "Bob Example" <[email protected]> 
C: To: "Alice Example" <[email protected]> 
C: Cc: [email protected] 
C: Date: Tue, 15 January 2008 16:02:43 -0500 
C: Subject: Test message 
C: 
C: Hello Alice. 
C: This is a test message with 5 header fields and 4 lines in the message body. 
C: Your friend, 
C: Bob 
C: . 
S: 250 Ok: queued as 12345 
C: QUIT 
S: 221 Bye 
{The server closes the connection} 

使用UDP电子邮件不会是个好主意,因为UDP数据包可以被丢弃。 TCP会更好用。但既然你提到这是一个任务,我想没关系。

所以首先写你的通用UDP客户端/服务器代码。然后修改它以支持SMTP命令。

我首先实现简单的echo协议。或者只需在echo协议中以您最喜欢的语言在线搜索一些源代码。例如,如果您想使用C++和boost.asio进行联网,则对于UDP echo客户端和服务器,它的demo code。对于Perl,有一些简单的UDP代码here

然后浏览你需要的RFC 821的部分,然后从那里开始。我猜是因为这是一项任务,你可能不需要协议中的所有内容。

由于协议只是简单的文本命令和响应,解析它应该不成问题。

+0

非常感谢您的帮助。 – AbdullahTariq

+0

这正是需要实施的内容。再次感谢! – AbdullahTariq