- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道对于 TCP 套接字 ECONNRESET 与 RST 数据包有关。但是我在 read() 和 write() 调用上也看到了 AF_LOCAL 套接字的 ECONNRESET 错误。这是什么意思? ECONNRESET 与 read() 返回 0 或 write() 抛出 EPIPE 有何不同?
最佳答案
ECONNRESET 似乎意味着另一端关闭了连接,而没有读取已发送给它的未完成数据,并且可以在 read() 和 write() 上触发。但确切的行为取决于操作系统。
EPIPE
似乎是在对已关闭的套接字进行 write() 时触发,并且没有未完成的传出数据。适用于 PF_LOCAL 和 TCP 套接字。示例( ruby ):
a, b = UNIXSocket.pair
b.close
a.write("foo") # => EPIPE, on all OSes
a, b = UNIXSocket.pair
b.close
a.read # => 0 bytes, on all OSes
a, b = UNIXSocket.pair
a.write("hello")
b.close
a.read
# Linux: ECONNRESET
# OS X : returns 0 bytes
# Side A # Side B
s = TCPServer.new('127.0.0.1', 3001)
c = s.accept
c = TCPSocket.new('127.0.0.1', 3001)
c.write("hello")
c.close
c.read
# Linux: ECONNRESET
# OS X : returns 0 bytes
a, b = UNIXSocket.pair
a.write("hello")
b.close
a.write("world")
# Linux: EPIPE and not ECONNRESET
# OS X : EPIPE and not ECONNRESET
# Side A # Side B
s = TCPServer.new('127.0.0.1', 3001)
c = s.accept
c = TCPSocket.new('127.0.0.1', 3001)
c.write("hello")
c.close
c.write("world")
# Linux: ECONNRESET
# OS X : no error
关于sockets - ECONNRESET 在 AF_LOCAL 套接字的上下文中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2974021/
我知道对于 TCP 套接字 ECONNRESET 与 RST 数据包有关。但是我在 read() 和 write() 调用上也看到了 AF_LOCAL 套接字的 ECONNRESET 错误。这是什么意
我刚刚开始在 UNIX 中进行套接字编程,并且正在阅读套接字系统调用的手册页。我对 AF_LOCAL 参数及其使用时间感到有点困惑。手册只是说本地通信。 AF_INET 格式是否也适用于本地通信? 最
我有一个小型应用程序,它使用 Unix 域套接字与客户端通信数据。套接字的类型是 SOCK_STREAM,并且设置为阻塞模式(默认)。当客户端很懒并且无法处理我写入套接字的数据时,我在特定情况下遇到了
是否可以在 Linux 上的 AF_UNIX SOCK_DGRAM 套接字上进行多播通信? 显然 a patch was proposed over a decade ago .但是,我无法在 Int
如果重要的话,我正在运行 Fedora 13。 我查阅了 unix(7)、setsockopt 和 send/recv 的手册页。 阅读手册页似乎或多或少地告诉我,并不是所有的选项都保证可以做任何事情
我是一名优秀的程序员,十分优秀!