소켓통신시 listen은 한번만 실행해도 되나요?

athxue의 이미지

클라이언트 요청을 받아들이고 처리하고 다시 받아들이고 처리하고 하는 루틴을 만들때
소켓 통신 소스를 보면 listen함수는 한번 실행하고 나머지는 루프속에서 accept만 실행
하는걸 봤습니다. 이게 한 클라이언트 처리가 끝나면 close하고 다시 listen을 통해 새
클라이언트 접속을 기다려야 하는건가요? 아니면 한번만 listen을 해두면 close시 자동으로 listen
으로 돌아가는건가요?

IsExist의 이미지

listen은 한번만 호출합니다.

socket 생성
bind 
listen
while (종료가 아닌동안)
{
    accept
    서비스 처리:내부에서 close할 수도 있겠죠. thread 또는 fork
}
close (서버소켓)

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

dhjung의 이미지

listen하는 socket과 accept 후 리턴값으로 리턴되는 socket은 서로 다른겁니다...

따라서, accept에서 리턴된 socket을 close한다고해도
그건 client와 연결된 socket이 close되는것이지.. listen socket이 close되는건 아닙니다.

-------------------
Donghyun Jung


--------------------------
Donghyun Jung

athxue의 이미지

그럼 listen소켓은 받기만 하고 accept하면 운영체제가 다른소켓을 열고 자동으로 연결시켜 주게 되는건가요?

dhjung의 이미지

네...

커널에서 알아서 accept() 호출시

listen socket과 동일한 성질을 가지는 socket을 생성해 클라이언트와의 TCP connection을

가리키게 한뒤, accept()의 리턴값으로 리턴합니다.

--------------------------
Donghyun Jung


--------------------------
Donghyun Jung

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.