setsockopt 에서 SO_LINGER 쓰는 방법

익명 사용자의 이미지

안녕하세요. 홍순이 입니다.

1. socket을 stream 형태로 생성하고
2. option을 주고
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &sockop, sizeof(sockop));
setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, &sockop, sizeof(sockop));
3. connect를 내부에 아무도 쓰지 않는 ip로 했습니다.

그런데 이것이 거의 몇십분동안 그냥 멍하니 있다가 한참만에야 error number
110 connection timeout이 나옵니다.
그래서 connect시 시간을 제한해서 바로 다음 작업으로 넘어 가고 싶은데요.
SO_LINGER가 그런 역할을 해주는 것 같은데 자세한 사항 알고 계신분에게 부탁
좀 드립니다.

감사합니다.

익명 사용자의 이미지

그럴 경우 제가 본 것들은 대부분 alarm을 이용해서..
시그널로 처리하던걸요..

쿨럭..

익명 사용자의 이미지

자세한 설명이나. 아님 소스 출처를 혹시 갈켜주시면..

감사합니다.

익명 사용자의 이미지

음 우선 qmail 소스 (cr.yp.to) 에도 있구요..

alarm () 함수로 시간을 지정해 놓으면 그 지정된 시간 후에

SIG_ALRM 시그널이 발생하구요..

이 시그널의 핸들러를 접속이 안될경우의 처리 함수로 지정하시구요..

시간안에 접속이 되었을 경우는 핸들러를 되돌려 놓으면 됩니다..

p.s proftpd 의 inet.c 에서 SO_LINGER 을 쓰는군요..
하지만 역시 timer 는 쓰네요. 방금 본거라서 자세한 것은 소스를 ㅡ.ㅡ

익명 사용자의 이미지

SO_LINGER 옵션은 socket이 종료 되었을때 버퍼에 저장된 데이타의 처리 방식
을 지정하는 옵션입니다. 그래서 타이머하고는 상관이 없는걸로 알고 있습니
다. 그래서 타이머를 설정하실려면 아랫분이 답변하신것과 같이 alarm을 사용
해야 할것 같습니다.

댓글 달기

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