소켓 프로그래밍 중에서...

moonzoo의 이미지

man recv 해보았더니

댜음과 같은 것이 있었습니다.

[ECONNRESET]
A connection was forcibly closed by a peer.

근데 막상 Server에서 recv중에

Client를 강제로(ctrl+c) 로 죽였더니..

Server의 recv에서는 errno가 발생치 않고..

0을 리턴하는 군요..

recv중에 ECONNRESET은 언제 일어 나는건가여?

-------- 또 한가지..

Server에서 select로 client와 연결된 socket fd를 read set에

걸어놓고 기다리는데 Client가 죽어도

select에서 -1, 또는 0을 리턴하지 않고 걍 넘어가네여(양수 리턴)

원래 그런건가여?

제가 보통 poll을 쓰는데..poll에서는 POLLHUP이 발생하거든여..

암튼 소켓 프로그래밍 정리차 다시 한번 구성해 보고 있는데..

헤메고 있는 듯--;

stoneshim의 이미지

Quote:
recv중에 ECONNRESET은 언제 일어 나는건가여?

다음 스레드를 참고하세요.( 스레드 내의 read와 recv의 return 값은 동일합니다)

http://bbs.kldp.org/viewtopic.php?t=9276&highlight=ECONNRESET

Quote:

Server에서 select로 client와 연결된 socket fd를 read set에
걸어놓고 기다리는데 Client가 죽어도
select에서 -1, 또는 0을 리턴하지 않고 걍 넘어가네여(양수 리턴)
원래 그런건가여?
제가 보통 poll을 쓰는데..poll에서는 POLLHUP이 발생하거든여..

poll도 양수 리턴하지 않나요?
양수 리턴이고 revent에 POLLHUP과 POLLIN이 둘 다 set되는것으로 알고 있습니다.
select의 경우에는 HUP과 같은 상황을 체크하도록 되어있지 않기 때문에 read set에 set 되는것으로 알고 있습니다.

잘못된 부분이 있다면 지적해 주시길...

우리 모두 리얼리스트가 되자. 그러나 가슴에 이룰 수 없는 꿈을 가지자

choissi의 이미지

음수는, select중에 에러가 발생한 것이고
(주로 유효하지 않은 fd를 select에 걸었을때 나옵니다.)
0은 타임아웃
그리고 1이상은 발생한 이벤트의 수입니다.

컨넥션 종료 체크는 보통 read에서 0을 리턴으로 확인하니까
select 입장에선 close로 read fd_set에서 이벤트가
생긴것으로 보겠지요..

울랄라~ 호기심 천국~!!
http://www.ezdoum.com

moonzoo의 이미지

답변 감사드립니다.

이제 좀 알꺼 같습니다 ^^

이번 기회에 좀 제대로 정리를 해야 겠네요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.