Safari 的 Send() EPIPE only 问题

Send() EPIPE only issue for Safari

提问人:user129393192 提问时间:10/16/2023 更新时间:10/16/2023 访问量:26

问:

因此,对于一个大型视频文件,我从服务器接收(读取),并在 C 中传输回客户端(充当反向代理)。我在循环中执行此操作(一次块)。

特别是对于Safari,我在发送回客户端时会得到一个EPIPE,并且完整的视频文件不会发送,也无法在浏览器中播放(但是进行跟踪时,发送了大量字节)。设置MSG_NOSIGNAL可以解决此问题,并且发送所有字节(一次发送块)。

为什么会这样?设置MSG_NOSIGNAL会导致 SIGPIPE 无法发送给我,但为什么它允许我正确发送数据并继续这样做?据我了解,Safari 已经关闭了它的套接字以发生这种情况(它是唯一有问题的浏览器)。

C Linux macOS 套接字 网络

评论

1赞 Steffen Ullrich 10/16/2023
除了您展示的任何代码外,我只能推测您没有正确实现协议,因此隐式依赖于浏览器协议栈中的实现细节 - 即适用于某些浏览器,但不适用于其他浏览器。如果您希望获得此问题的帮助,请遵循如何创建最小的、可重现的示例

答: 暂无答案