【问题标题】:Talking to a server in Win32; how do I see the server's response?在 Win32 中与服务器通信;如何查看服务器的响应?
【发布时间】:2011-01-16 03:33:30
【问题描述】:

我是 Win32 编程新手。

sprintf(lpszBuff,"HELO Mail-Server\r\n");
     send(s,lpszBuff,strlen(lpszBuff),0);     
     recv(s,lpszBuff,100,0);
  cout << lpszBuff;

在这里,我连接到本地邮件服务器。缓冲区包含我发送的请求,同一个缓冲区包含浏览器发送的回复。我如何看到回复? cout &lt;&lt;buffer 不显示任何输出。我在 VC++ 2008 上这样做。

【问题讨论】:

  • @Michael Hey...谢谢编辑...
  • 请注意:当您的问题格式等存在明显问题时,请确保在编辑之前刷新页面,以防其他人已经为您完成。你在我刚刚完成的编辑上保存了一个编辑,@Michael 必须修复这个问题,同时改写你的标题和文本。
  • debug 和 variable watch 说什么?您是否获得了 recv() 函数来填充缓冲区?您能否粘贴更多代码?初始化、winsock设置等到pastebin之类的。谢谢。

标签: winapi smtp winsock visual-c++


【解决方案1】:

您使用的是阻塞还是非阻塞套接字? recv() 的返回值是多少?很有可能,您在有任何内容可供阅读之前就在阅读,recv() 正在返回一个您忽略的错误代码。你所展示的太简单了。正确的套接字编码需要更多的逻辑(当发生不完整的发送/读取时循环,使用select() 来检测套接字状态、错误处理等)

【讨论】:

    【解决方案2】:

    当您作为发件人与 SMTP 服务器通信时,接收/邮件服务器应首先向发件人发送 220 命令。

         R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready
         S: HELO USC-ISIF.ARPA
         R: 250 BBN-UNIX.ARPA
    
         S: MAIL FROM:<Smith@USC-ISIF.ARPA>
         R: 250 OK
    
         S: RCPT TO:<Jones@BBN-UNIX.ARPA>
         R: 250 OK
    
         S: RCPT TO:<Green@BBN-UNIX.ARPA>
         R: 550 No such user here
    
         S: RCPT TO:<Brown@BBN-UNIX.ARPA>
         R: 250 OK
    
         S: DATA
         R: 354 Start mail input; end with <CRLF>.<CRLF>
         S: Blah blah blah...
         S: ...etc. etc. etc.
         S: .
         R: 250 OK
    
         S: QUIT
         R: 221 BBN-UNIX.ARPA Service closing transmission channel
    

    R: Receptor -- 本地 SMTP 服务器 S:表示本地Sender

    基本上你应该:

    recv(s,lpszBuff,200,0); // for 220
    cout << lpszBuff;
    sprintf(lpszBuff,"HELO Mail-Server\r\n");
    send(s,lpszBuff,strlen(lpszBuff),0);     
    recv(s,lpszBuff,100,0);
    cout << lpszBuff;
    

    确保您的套接字处于阻塞模式。

    【讨论】:

      猜你喜欢
      • 2013-10-05
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多