[질문] 리눅스 소켓 프로그래밍 중 ... listen 함수의 연결 요청 대기큐 설정 후 의문점 ㅡㅡa

cjynim의 이미지

안녕하세요?? 리눅스 소켓 프로그래밍 공부 중 의문점이 생겨서 질문 올립니다 ..

int listen(int s, int backlog); <-- 요 함수에서 backlog에 일정 숫자를 대입하면 연결 요청 대기

큐라는것이 생겨서 클라이언트로 부터 연결 요청 즉, connnect()함수가 호출 되면 일단 연결 요청 대기

큐로 들어가게 되고 서버에서는 accept()함수를 통해서 이 대기 큐의 클라이언트를 하나씩 꺼내어

연결을 맺고 서로 통신이 이루어 진다고 되어있습니다.. (제가 공부하고 있는 책에요 ㅜㅜ) 그래서 listen

함수의 backlog에 2를 주고 연결 요청을 두개 이상 못 받게끔 코드를 수정하고 accept()함수 부분을 없애

버렸습니다. 아래는 제가 테스트를 하기 위해 수정한 서버의 코드 일부분 입니다. 참고로 error()이거는

제가 예외처리를 위해 만든것이고요 .. listen()함수로 2개의 공간을 갖는 대기 큐를 만들고 while문을

무한 반복 시켜 단순의 클라이언트의 접속 상태를 확인하고자 만든 예제 입니다.

if(listen(serv_sock, 2) == -1)
   error("listen() error");
 
while(1) {}

그러니까 단순히 연결 요청만 받아서 만약 2개 이상의 클라이언트로 부터의 연결 요청이 들어 오면 다음번

클라이언트의 상태가 어떻게 되는지 궁금했습니다 .. 제 생각 대로 라면 먼저 client1이 접속요청을 하면

당연히 accept()함수 부분이 없으니까 대기큐의 첫번째 공간에 들어가게 되고 client2가 접속을 하게 되면

대기큐의 두번째 공간에 들어가 대기 큐는 꽉 차서 더 이상 연결 요청을 수용할 수 없게 되어 client3는

접속을 못하게 됐어야 하는데 ... client3, client4 .. 이렇게 계속 연결 요청이 되더라구요 ...

그럼 연결 요청 대기큐의 크기를 잡아주는 의미가 없어지지 않나요?? 제가 뭔가 잘 못 이해하고 있는건가

요??

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.