特急,高手都进来看看,关于SMTP协议(在线等)
(使用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);
程序做到这一步就一直等下去了
各位高手,帮小第看看出了什么问题,谢谢!!