上课老师留的作业,
“基于UDP协议的可靠的电子邮件传输系统”。没有什么头绪,
大家有什么建议没有?怎么实现、看些什么书、看看哪些网站?
“基于UDP协议的可靠的电子邮件传输系统”。没有什么头绪,
大家有什么建议没有?怎么实现、看些什么书、看看哪些网站?
解决方案 »
- 怎么控制浏览器的选项卡的关闭
- MFC 工具条 的问题 再发一贴 (内容不变)
- 估计是内存泄露了,但是实在不知道在哪?求解
- c++如何得到当前鼠标在哪个对话框上
- 怎么样使用vb做的activex控件在网页中显示(已经设置过ie和安全设置仍然无效)!!
- 小女子请教一个郁闷了很久的对话条的问题
- 怎样判断被调用的dll或exe执行完毕?
- 怎样动态创建一个输入对话框?
- 请问初始化CFormView中的控件应该在哪个函数中做?
- 一个伪造http请求包的思路是否可行?
- 总链接时总是出现 error LNK2001: unresolved external symbol _ 问题
- 关于调试工具 boundscheck 的问题~?
用UDP方式创建一个socket,bind某个端口,启动一个线程,不断检测是否有数据到达,如果有就读入缓冲区(这些都是邮件内容),进行文本显示和存储等等。
发送时,把待发文本拷入缓冲区然后发送到目标地址和端口就行了。
最重要的一点是可靠,因为UDP的性质就是无连接、不可靠,所以在接收到邮件之后,记得发送确认消息(和上边的发邮件一样)。当一方发送了邮件之后在指定时间内没有收到确认消息,则认为邮件丢失了,重新发送。
一个clien、一个server,而且server要一直运行着?除了上面说的握手过程以外,还需要什么机制来保证数据传输的可靠性?要是数据过大,需要分成数据包的时候,数据包的大小为多大合适??
能不能指点一下?
一般我做是用HASH表来做,你可以直接用个LIST来做可能就可以交作业了。
结点里面放这些东西。
比如像这样:
struct sessionnode
{
unsigned long m_ip;
unsigned short m_port;
char m_name[12];
char m_pass[12];
FILE *m_file;存放文件指针的。
unsigned long m_offset;存放文件位置的。
bool m_logined;
};
好了,这样客户向服务器连接的格式你自己掌握。
先开始认证过程。
USER yourname
PASS yourpass
服务器收到后然后把文件传给你。你每次发送都要在头部加个ID。
服务器收到后假如你不是USER命令的话就在链表中查找有没有你的IP和PORT。没有的话就不处理。假如是USER命令的话就初始化一个sessiondata.
认证后就开始传输了。
每次传输重传机制我上面已经说得很清楚了。我想没必要再讲了。