特急,高手都进来看看,关于SMTP协议(在线等)

funsunyi 2004-02-27 10:01:26
(使用windows socket 2.0 VC6下编程)我要做一个SMTP服务器,用在同一台机上的FOXMAIL做测试(就是把FOXMAIL中的SMTP服务器地址设成本机IP)
应答如下:
S:连接
R:220 READY
S:HELO HOSTNAME
R:250 HOSTNAME
S:……

在S发送HELO HOSTNAME后,R能顺利接收。
R回答250 HOSTNAME后,S不能接收(表现为FOXMAIL的一直在发送HELO HOSTNAME,没有发送MAIL FROM……)
程序一直等待直到被CANCEL,因为SOCKET为BLOCKING模式;

大概程序如下:
SOCKET listen_socket;
listen_socket=socket(AF_INET,SOCK_STREAM,0);//打开一个SOCKET

SOCKADDR_IN local;
local.sin_family=AF_INET;
local.sin_port=htons(25);
local.sin_addr.s_addr=INADDR_ANY;
int errBind;
//绑定一个端口25
errBind=bind(listen_socket,(struct sockaddr far *)&local,sizeof(local));

//监听连接
errListen=listen(listen_socket,1);

//接收连接
accept_socket=accept(listen_socket,(struct sockaddr*)&from,&fromlen);

//发送220 READY信息
flag=send(accept_socket,"220 ready\r\n",sizeof("220 ready\r\n"),0);

//接受反馈
recv(accept_socket,buffer,sizeof(buffer),0);

//打印接收到的信息可以看到里面有HELO HOSTNAME
printf("%s",buffer);

//发送250 HOSTNAME 信息
send(accept_socket,"250 hostname",sizeof("250 hostname"),0);

//接受反馈
recv(accept_socket,buffer,sizeof(buffer),0);

程序做到这一步就一直等下去了

各位高手,帮小第看看出了什么问题,谢谢!!




...全文
66 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复

4,387

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧