소켓연결 후 랜포트를 빼거나 상대방 PC를 끊경우에 감지할수있

익명 사용자의 이미지

서버/클라이언트로 간단한 프로그램을 작성하고
클라이언트에서 서버로 접속을 한후에
서버쪽에서 랜케이블을 빼거나, 클라이언트 PC를 끄면
서버쪽에서 수분내에 감지가 되어 소켓을 끊을수 있어여
되는데 잘 안되네요
소켓옵션 KEEPALIVE, RCVTIMEO, SNDTIMEO 등을 써봐도
서버에서는 연결된것으로 간주하여 1시간이든 하루든 그대로
연결된것으로 알고 있습니다.
해결방법좀 갈켜주세요

익명 사용자의 이미지

그냥 정기적으로 서버가 패킷을 보내고 이 패킷에 대한 응답이

몇개 이상 없으면 접속 폐기로 잘라버리는 것이 좋은 방법인듯 싶네요.

그럼 고운 하루...

익명 사용자의 이미지

그방법은 서버/클라이언트간에 약속된 패킷방식에서나 가능하겠지요
에뮬레이터를 클라이언트로 사용해서 서버에 소켓을 연결하는 경우등은
안되니까 말입니다.
기존 에뮬레이터 프로그램을 고칠수는 없잖아요

익명 사용자의 이미지

ㅇㅇ

익명 사용자의 이미지

저도 이런질문을 많이 보긴했지만 그에대한 답변은 일률적이더군요.
그래서 많은 서버프로그램들이 시간을 정해 놓고 그 시간안에 응답이
없으면 연결을 끊어버리는 방식을 취하고 있습니다.
어차피 이벤트는 클라이언트측에서 발생을 하지만 그 발생된 이벤트도
클라이언트가 정상적으로 동작할때의 이야기지 비정상적인 행동을 한다면
서버측에서는 어떠한 방식으로도 감지하기가 힘들어 집니다.
(라인이 끊어졌거나 PC가 꺼져버리면 도착점 IP가 사라져버려서 오랜시간
네트워크상을 배회하겠죠. Time out을 지정하지 않는다면 PC를 키거나
라인을 연결시킬때가지도 돌아다닐거라고 들었습니다...)
따라서 이런경우는 서버측에서 일정시간 응답이 없다면 끊어버리는 방법
밖에는 도리가 없네요.
아~ 저는 고수도 아니고 그렇다고 네트워크만 전문적으로 프로그램하지는
않지만 예전에 이문제로 많은 고민을 하다가 얻은 결론일 따름입니다.
클라이언트가 대중화되어져있는 거라도 먼저 공지를하고나 알린 후에
이렇게 Time Out을 걸어주는 것도 하나의 방법이겠죠.
(정확한 정보인지는 모르지만 이런 일이 발생하는 이유가 현재의 네트워
크 설계 당시부터 많은 고민을 하다가 그냥 넘어갔기 때문이라고 들었으
니 방식이 바뀌지 않는다면 앞으로도 프로그램할 때 많은 고민을 하게
되겠죠.)

익명 사용자의 이미지

수분내에 감지 하려면, 신호를 일정시간간격동안에 서버와 클라이언트간
에 임의의 신호를 주고 받으면 됩니다. 만약 peer에서 reboot또는 갑작스
런 연결종료, unreachable 상황이 발생하면, read 등의 함수를 호출할때
발생하는 시그널과 read의 리턴값을 이용하여 peer의 상황을 확인하고 연
결을 종료시키면 될 것같습니다.
단 write등의 함수에 따른 시그널로는 처리하기가 어렵습니다.

댓글 달기

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