리눅스 c++ 소켓통신중 네트워크 단락상태를 확인하는 방법

ansrhkd00의 이미지

안녕하세요

Centos 리눅스에서 서버프로그램과 소켓통신을 하는 클라이언트 프로그램을 작성중입니다.

그런데 send와 recv는 모두 비동기로 처리가 되고 있는 상태에서

네트워크 연결이 끊긴다거나 랜선이 뽑히는 상태가 되었을 때 이를 클라이언트 소켓에서 알 수가 없네요

윈도우 소켓을 이용할 때에는 네트워크 단락이 발생했을 때 send 함수에서 -1을 리턴해 주었던것 같은데

리눅스에서는 단락상태에서 send를 해도 연결아 되어있는 상태와 같이 보내려고 한 데이터만큼 리턴값이 나오네요

윈도우와 리눅스 소켓에 차이가 있어서 이러는건지 뭔가 설정이 잘못된건지 모르겠네요

리눅스에서 네트워크 단락 상태에서 send시 -1을 리턴해 주거나 혹은 단락이 발생했을 때 이를 알 수 있는 방법이 없을까요?

shint의 이미지


찾다보니. 윈도우 관련도 적어봅니다.

리눅스 랜선 연결 확인
http://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%9E%9C%EC%84%A0_%EC%97%B0%EA%B2%B0_%ED%99%95%EC%9D%B8

/sbin/ethtool 장치명

Linux - 시스템 관리 : 네트워크 연결 확인
http://develop.sunshiny.co.kr/953

ethtool em1

리눅스 - 랜카드 상태 확인 및 연결 속도 변경 mii-tool 사용방버에 대해서
http://tip.daum.net/question/163362

Connected Internet
http://www.codeproject.com/search.aspx?q=Connected+Internet&x=0&y=0&sbo=kw

Connected network
http://www.codeproject.com/search.aspx?q=Connected+network&x=0&y=0&sbo=kw

인터넷 연결이 안될 때 확인 방법, 인터넷 접속 오류·홈페이지 접속 오류 등
http://blog.bsmind.co.kr/404

안드로이드 > 네트워크 연결 상태를 확인하는 ConnectivityManager
http://ankyu.entersoft.kr/Lecture/android/network_01.asp

C# 인터넷 연결상태 확인
http://www.dreamy.pe.kr/zbxe/CodeClip/158751

IT사랑 -- centOS 6.5(리눅스) 인터넷 연결을 위한 네트워크 설정
http://itsarang.tistory.com/32

[완료]centOS5 네트워크연결,, 도와주세요(ifconfig 첨부)
https://kldp.org/node/90044

리눅스 명령어 - netstat (네트워크 연결 상태) - 네이버 블로그
http://blog.naver.com/PostView.nhn?blogId=saipe&logNo=50100084328

리눅스 서버 네트워크 관리
https://www.linux.co.kr/home/lecture/index.php?cateNo=&secNo=&theNo=&leccode=10730

우주곰, 엔지니어 방랑기 -- [리눅스네트워크]네트워크 관련명령어
http://se.uzoogom.com/97

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

jic5760의 이미지

네트워크가 예기치 않게 끊겼을 때 (랜선이 뽑인것 뿐만 아니라 중간에서 끊긴 경우도..) 연결 실패를 확인하려면 timeout시간만큼이 걸립니다. retry횟수*timeout 시간은 꽤 깁니다...
그래서 SSH도 그렇고 일정 시간마다 heartbeat(또는 ping이라고도 합니다)을 보내고 응답이 수초/수분동안 없으면 연결을 끊는 방식으로 비정상 커넥션을 정리합니다.

댓글 달기

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