首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个关于 recv 阻塞的有关问题 求高手!

2012-02-21 
一个关于 recv 阻塞的问题求高手!!!我用c++ 通过socket 做一个发送邮件的程序 通过esmtp实现的程序可以 链

一个关于 recv 阻塞的问题 求高手!!!
我用c++ 通过socket 做一个发送邮件的程序 通过esmtp实现的

程序可以 链接上smtp服务器

当程序链接上服务器的时候 服务器就会返回一个字符串 如下 (末尾有换行)
"220 irja2-171.sinamail.sina.com.cn ESMTP
"
以上的字符串可以通过调用 recv正常接受 (第一次调用recv)
但是当我发送 EHLO XXXXX@sina.com 后 再次调用 recv 的 时候就进入阻塞了 (我在 telnet 是可以正常就是的)

C/C++ code
int SendMail::RcvServMsg(void){    char buf[BUFSIZE] = {0};    if(::recv(this->iSocket,buf,sizeof(buf),0) == -1)    {//接受服务器的回馈数据失败        ::closesocket(this->iSocket);        this->bConn = false;        return SM_RCV_INFO_FAILD;    }    this->sRcvReturnMsg.assign(buf);    ::memcpy(this->cCode,buf,3);    this->cCode[3] = 0;    return 0;}


[解决办法]
既然接受的有\n,那么发送是不是也应该有\n,不懂,猜的
[解决办法]
应该是你发送数据到服器的格式可能有问题,服务器没作出回应,服务器没有返回数据,造成recv 阻塞。

热点排行