TCP 소켓의 경우 ECONNRESET이 RST 패킷과 관련이 있다는 것을 알고 있습니다. 하지만 AF_LOCAL 소켓에 대한 ECONNRESET 오류도 read() 및 write() 호출에서 확인했습니다. 이것은 무엇을 의미 하는가? ECONNRESET은 0을 반환하는 read()와 EPIPE를 던지는 write()와 어떻게 다릅니 까?AF_LOCAL 소켓 컨텍스트에서 ECONNRESET의 의미는 무엇입니까?
25
A
답변
73
ECONNRESET은 전송 된 미결 데이터를 읽지 않고 다른 쪽에서 연결을 닫았으며 read() 및 write()에서 트리거 될 수 있음을 나타냅니다. 그러나 정확한 동작은 운영 체제에 따라 다릅니다.
EPIPE
이미 폐쇄 된 소켓에 때 한 쓰기()의 트리거 것 같다, 더 뛰어난 나가는 데이터가 없습니다. PF_LOCAL 및 TCP 소켓 모두에 적용 가능합니다. 실시 예 (루비) 타측이 연결을 종료하고 있으며, 더 우수한 송신 데이터가없는 경우 0
가 트리거 복귀
a, b = UNIXSocket.pair
b.close
a.write("foo") # => EPIPE, on all OSes
리드(). PF_LOCAL 및 TCP 소켓 모두에 적용 가능합니다.
a, b = UNIXSocket.pair
b.close
a.read # => 0 bytes, on all OSes
ECONNRESET
리눅스에 그것은 다음과 같이 작동합니다 : 아직 다른 측면에 기록되지 않은 뛰어난 나가는 데이터가있을 때
가 트리거. read()는 PF_LOCAL 및 TCP 소켓 모두에 대해 트리거하지만 write()는 TCP 소켓에만 트리거합니다. PF_LOCAL 소켓은 EPIPE를 트리거합니다.
특정 OS 동작에 대한 예제를 참조하십시오. 다른 OS가 어떻게 작동하는지 알고 있다면 기여하십시오.
예 1 : (읽기) PF_LOCAL 소켓
a, b = UNIXSocket.pair
a.write("hello")
b.close
a.read
# Linux: ECONNRESET
# OS X : returns 0 bytes
예 2 : TCP 소켓) (
# 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
예 3 읽기 (쓰기) PF_LOCAL 소켓
a, b = UNIXSocket.pair
a.write("hello")
b.close
a.write("world")
# Linux: EPIPE and not ECONNRESET
# OS X : EPIPE and not ECONNRESET
예제 4 : TCP 소켓에서 write()
# 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
관련 문제
- 1. 이 컨텍스트에서 hg 책갈피의 의미는 무엇입니까?
- 2. 소켓 용어 - "차단"의 의미는 무엇입니까?
- 3. blank = Django의 * Integer 필드의 컨텍스트에서 참 의미는 무엇입니까?
- 4. 이 컨텍스트에서 (model! = null) 및 (db! = null)의 의미는 무엇입니까?
- 5. 이미지 디코딩의 컨텍스트에서 "부호없는 모듈러스 256"이란 의미는 무엇입니까?
- 6. ESB의 컨텍스트에서 VM 전송이란 무엇입니까?
- 7. /([^.]*)\.(.*)/ 의미는 무엇입니까?
- 8. || = 의미는 무엇입니까?
- 9. @ 기호는 Objective-C의 의미는 무엇입니까?
- 10. 의미는
- 11. withValueBackReference의 의미는 무엇입니까?
- 12. 이 코드의 의미는 무엇입니까?
- 13. 파싱의 의미는 무엇입니까?
- 14. XAML에서 *의 의미는 무엇입니까
- 15. 다음 코드의 의미는 무엇입니까?
- 16. jquery/javascript에서 /.*=/ 의미는 무엇입니까?
- 17. 추적 표시의 의미는 무엇입니까?
- 18. DTMobileIS의 의미는 무엇입니까?
- 19. "for (;;)"의 의미는 무엇입니까?
- 20. jquery에서 줄의 의미는 무엇입니까?
- 21. 각 옵션의 의미는 무엇입니까?
- 22. (T) SQL에서 = + 의미는 무엇입니까?
- 23. 거래의 의미는 무엇입니까?
- 24. CDATA의 의미는 무엇입니까
- 25. 'useArrows : true'의 의미는 무엇입니까?
- 26. JavaScript에서 각각의 의미는 무엇입니까?
- 27. CSS에서 +의 의미는 무엇입니까?
- 28. .zfproject.xml 파일의 의미는 무엇입니까
- 29. 이 URL의 의미는 무엇입니까?
- 30. Java에서 "| ="의미는 무엇입니까?