gpt4 book ai didi

sockets - 如果我调用了shutdown(fd,SHUT_RDWR),但没有调用close(fd),会发生什么?

转载 作者:行者123 更新时间:2023-12-03 11:59:51 24 4
gpt4 key购买 nike

如果我调用了shutdown(fd,SHUT_RDWR),但没有调用close(fd),会发生什么?

inline void CSocket::close()
{
if (_socket_fd != INVALID_SOCKET)
{
::shutdown(_socket_fd, SHUT_RDWR);
::close(_socket_fd);
_socket_fd = INVALID_SOCKET;
}
}

最佳答案

if i called shutdown(fd,SHUT_RDWR),but not called close(fd),what will happen?



很少:
  • 在网络上,什么都没有。
  • future recv()read()套接字中的调用将返回零,表示流结束。
  • 您仍然可以从这个套接字发送。
  • 如果对等方尝试向您发送更多数据会发生什么取决于系统:如果您的平台是 Windows,将发出重置;如果是Unix,数据将被确认并丢弃;如果是 Linux,数据将被确认并无用地保存在您的套接字接收器缓冲区中,从那里您永远无法检索它,并且最终将关闭您的接收窗口并阻止对等方发送。
  • 套接字描述符没有关闭或释放给操作系统。
  • 关于sockets - 如果我调用了shutdown(fd,SHUT_RDWR),但没有调用close(fd),会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51549985/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com