首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >close() vs. shutdown() with recv()

close() vs. shutdown() with recv()
EN

Stack Overflow用户
提问于 2009-11-08 20:05:02
回答 2查看 1.3K关注 0票数 0

我有以下代码:

客户端:

代码语言:javascript
复制
n=recv(sock,buf,1200,NULL);

服务器端:

代码语言:javascript
复制
shutdown(sockk,SD_BOTH);

问题是,客户端recv返回0,这意味着正常关机。我需要它返回-1 (我不能改变客户端,我需要使我的代码适应它)。

我该怎么做才能让它返回-1?

EN

回答 2

Stack Overflow用户

发布于 2009-11-09 13:54:51

我想通了。使用SO_LINGER设置套接字,从而导致异常关闭。现在它在shutdown()之后返回-1

票数 2
EN

Stack Overflow用户

发布于 2009-11-08 20:14:14

不要从服务器调用shutdown()或close(),这样就可以向客户端进程发送一些信号。因此recv()调用将返回-1,并使用EINTR设置errno。希望这能有所帮助。

但我建议您不要采用这种编码实践。recv()可以返回0,+ve number和-1。处理所有这些情况是很好的。

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

https://stackoverflow.com/questions/1696186

复制
相关文章

相似问题

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