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

BorrowedStory 2011-11-05 04:20:10
我用c++ 通过socket 做一个发送邮件的程序 通过esmtp实现的

程序可以 链接上smtp服务器

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

#define BUFSIZE 1024
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;
}


...全文
102 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BorrowedStory 2011-11-05
  • 打赏
  • 举报
回复
问题解决了
许文君 2011-11-05
  • 打赏
  • 举报
回复
你的接收的代码呢?你的recv本身就是阻塞。你第一次是因为立即收到返回了,所以你认为他不是阻塞
xiaoguailong3 2011-11-05
  • 打赏
  • 举报
回复
在线程里接收
BorrowedStory 2011-11-05
  • 打赏
  • 举报
回复
求高手!!

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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