代码之家  ›  专栏  ›  技术社区  ›  millimoose Tomasz Nurkiewicz

有没有一种方法可以关闭一个unix套接字,只用于读或写?

  •  3
  • millimoose Tomasz Nurkiewicz  · 技术社区  · 14 年前

    有没有一种方法可以只关闭TCP套接字的“一端”以清楚地指示连接的一侧已完成对连接的写入?(就像你在每个unix管道教程中使用管道一样)或者我应该使用一些带内解决方案,比如sentinel值或者类似的?

    1 回复  |  直到 14 年前
        1
  •  5
  •   Eric Petroelje    14 年前

    可以使用方法的第二个参数关闭套接字进行读写:

    shutdown(sock, SHUT_RD)
    shutdown(sock, SHUT_WR)
    

    如果服务器正在执行写入操作,并且执行shutdown()以进行写入,则客户端在尝试读取时应获得文件结尾(而不是阻塞和等待数据到达)。但是,它仍然能够写入套接字。