求教OSX下用Socket写邮箱服务器的正确体位?

新手上路,请多包涵

是这样的,有一个计网作业要求用c的socket编程完成一个邮箱服务器,很简单的功能。一开始为了避免不熟练磕磕碰碰我就开了虚拟机写windows下的版本,很顺利。
后来想实现Linux下的版本,就试了试,果不其然在SMTP协议上遇到了个磕绊,琢磨了很久搞不定,只好跪求各路大神解答。

这个程序和本地foxmail客户端进行通信,走环回地址。
建立tcp连接之后开始smtp命令的传输。接收到EHLO命令之后,开始进行身份验证,我的程序(服务端)发送一个身份验证规则(“250 smtp.qq.com|250 PIPELNING| blablabla.. “)。

然后就在这里出问题了:
在win下客户端立马完成了身份验证,并回复我邮件发送者的地址(如下图)。这过程中耗时几乎不计。

win下的代码
图片描述
win下运行效果
图片描述

而Linux下,程序在发送验证规则后挂起了很久,客户端一直没有回复(或者说我的程序没有接收到回复包更严谨一些)。
然后在接近一分钟之后才有动静,定睛一看,回复的内容却是 “\r\n . \r\n”(如下图)。什么鬼嘛

Linux下的代码
图片描述
Linux下运行效果
图片描述

雅蠛蝶 TAT 后来想抓一下Linux下和win下的包对比看看有什么不同,但是Mac版本的Wireshark能抓环回包而win不行,跪了。

求大神解惑!

阅读 2.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题