首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Win32中与服务器对话;如何查看服务器的响应?

在Win32中与服务器对话;如何查看服务器的响应?
EN

Stack Overflow用户
提问于 2011-01-16 11:33:31
回答 2查看 75关注 0票数 0

我是Win32编程的新手。

代码语言:javascript
复制
sprintf(lpszBuff,"HELO Mail-Server\r\n");
     send(s,lpszBuff,strlen(lpszBuff),0);     
     recv(s,lpszBuff,100,0);
  cout << lpszBuff;

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

EN

回答 2

Stack Overflow用户

发布于 2011-01-18 16:34:39

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

票数 0
EN

Stack Overflow用户

发布于 2011-01-24 19:01:46

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

代码语言:javascript
复制
     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:表示本地发送方

基本上你应该:

代码语言:javascript
复制
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;

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4703646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档