동적인 IP 알아내기

jundotcom의 이미지

맨날 눈팅만 하다가 오늘 가입하고.. 바로 질문 올립니다..^^
리눅스 상에서 C++로 간단한 어플리케이션을 개발 중인데,
현재 시스템이 동적인 IP Address를 가지는 관계로
만약 시스템 사용중에 IP가 바뀌면 서버로 통보해줘서 서버에서
통합적으로 각 Agent를 관리하게 됩니다.
문제는 사용중에 IP가 바뀌는 시점을 알수 있는지 궁금합니다.
혹시 관련 함수나 팁 같은거 있으면 올려주세요..^^
물론 thread를 사용하여 정기적으로 IP를 검사하여 이전 IP와 비교하는
방법이 있긴 합니다만 좀더 우아한 방법은 없을런지..^^;

liongo의 이미지

훗 답변은 아니고 저도 지나가다 함 생각해봤는데..

어플리케이션이 서버와 접속을 유지하지 않고.. IP정보가

변경된순간 커넥션을 만들고 정보를 보내는건가요?

접속을 유지하더라도 IP가 바뀐다몬 접속이 유지 될리 없으니

그럴꺼같다는 생각이드는데.. 주소가 바뀌는거만 체크하는건가요..

여러주소가 한 이더넷으로 세팅되는건 신경안쓰는건가..

여러 예외상황이 있을것같은데.. 저도 IP변경에 관해서 시그널이나

콜되는 시스템 관련함수가 잇는지는 정확히 모르겟으나..

소켓하나를 열어놓구 IP가 바뀌면 죽거나 이벤트를 받을것같은데

그쪽으로 생각해보심이..

저도 그냥 지나가다 호기심이 생겨 적어봅니다 ^^

' 형식이 내용을 규정한다. '

jundotcom의 이미지

연결이 유지되는건 아니고 UDP를 사용합니다.

하나의 이더넷에 여러 IP가 셋팅되는건 고려를 안해봤는데..

좀더 고민을 해봐야 할거 같군요..

암튼 좀더 찾아봐야겠지만 지금까지는 IP가 바뀌는 순간의 이벤트를 받을 방법이 없네요..

암튼 감사..^^

white color에서 gold color로 가는길..

지리즈의 이미지

jundotcom wrote:
시스템이 동적인 IP Address를 가지는 관계로
만약 시스템 사용중에 IP가 바뀌면 서버로 통보해줘서 서버에서
통합적으로 각 Agent를 관리하게 됩니다.

라고 한다면... 이미 해결된 것이 아닌가요?

클라이언트가 IP를 통보해 주는 행위자체가 이벤트로서 충분한 것으로 보이는데...

There is no spoon. Neo from the Matrix 1999.

liongo의 이미지

윗분은 주기적인것이 아니고 아이피가 변화하는 순간..

이더넷 디바이스의 상태변화의 이벤트를 잡고싶어 하시는것 같습니다..

주기적인 데이타 전송이 있다면 모르겠지만.. 원하시는것 또한

깔끔하게 시스템에서 발생하는 이벤트를 잡고싶으신것 같구요..

Agent가 자신 아이피가 변경되거나 최초에 등록을 하는거 같은데..

그렇다면 Agent는 관리대상이라는 말인데... 어차피 Heart beat가 필요하지

않나요? Agent가 죽었을수도 잇고 udp로는 주기적 체크없이 Agent의 상태를

관리할수 없을것같은데.. 저도 비슷한 프로그램을 제작했습니다 Multicast

와 UDP로 서버간 통신을 하는중이지요 자신의 아이피가 바뀐걸 체크하는

부분 까진 생각 않했습니다.. 그래도 서버간 정보를 주기적으로 체크하는걸로

해결보았습니다.. 서버가 살아있나도 체크해야되니까요.. 어떤서버를

구현하시는주 모르겠지만.. 해결방안을 찾으시면 답글 달아주세요 ~

궁금하네요....

' 형식이 내용을 규정한다. '

ㅡ,.ㅡ;;의 이미지

ip가 바뀌려면 dhcp 관련 프로그램이나 네떡관련프로그램이 실행이 되겠죠..
그럼 그프로그램이 실행되고난다음 통보해주면됩니다.


----------------------------------------------------------------------------

jundotcom의 이미지

네 liongo 님 말씀이 맞구요 heartbeat 기능도 수행합니다만 server측에서 agent 쪽을 검사하는 루틴으로 구성되어 있습니다.

그래서 agent 쪽 ip가 바뀌어 버리면 서버측에서는 agent를 잃어 버리게 되죠

server에서 agent 에게 job 을 수행 시키는데 그 순간은 언제가 될지 모르구요.

결론은 자주 이쪽 ip를 서버로 보내주던가 아니면 ip가 바뀌는 순간을 catch해서 서버로 날려야하는데..

전자보다는 후자가 더 나은거 같아서요

아무리 찾아도 그런 api는안보이네요..

아 그리고 답글 달아주신 분들께 감사..^^

white color에서 gold color로 가는길..

지리즈의 이미지

며칠 곰곰히 생각했는데...

이정도로 커넥션이 중요하다면 차라리 UDP보다는 TCP가 낳지 않을 까요?
주기적으로 허빗을 날려야 할 정도라면...

TCP면 이런 문제들이 다 해결되는데...

There is no spoon. Neo from the Matrix 1999.

댓글 달기

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