winsock send()/ recv()行为

时间:2014-09-29 09:09:48

标签: soap winsock

我最近开始涉足Windows套接字,创建了一个简单的客户端,它将肥皂消息发送到现有服务器,然后在使用阻塞套接字时尝试接收响应。我使用以下msdn doc作为我的向导: 的 http://msdn.microsoft.com/en-us/library/windows/desktop/ms740149%28v=vs.85%29.aspx 它明确指出 send()必须后跟 shutdown()并带有SD_SEND参数,然后再调用 recv()来获取响应。但当我试图执行规定的序列时, recv()函数返回值0. wireshark显示客户端对服务器的请求紧接着是发出FIN然后RST的同一客户端响应从服务器到达。当我在调试模式下运行代码时,我注意到 send()自动发出FIN,随后调用 shutdown(SD_SEND)导致RST,这解释了0是由 recv()返回。然而,当我设置“保持活力”属性时,相同的序列工作。 所以我想知道的是,msdn doc中为send()函数描述的调用序列是否仅适用于涉及“keep-alive”案例的案例?如果是这种情况,是否应该在非“保持活动”的情况下省略关闭(SD_SEND)?

谢谢你!

0 个答案:

没有答案