heart beat의 구현방법...

cjy1126의 이미지

5분마다 agent의 실행 유무를 알아야하는데, heart beat를 사용해야 한다는 생각까지는 했습니다.

문제는 구현을 어떻게 해야할지 모르겠습니다.

네트워크 프로그램이 아닌쪽으로 취업을해서(델파이) 유닉스와 네트워크 책을 모두 서울에 놔두고 내려와서 참고할것도 없습니다.

대략, 생각한 방법은 하나의 쓰레드를 생성해서 그 쓰레드에서 sleep(300) 후 heart beat를 보내고...

또 sleep(300) 후 heart beat를 생각합니다.

그런데, 아무리 생각해도 이건 아닌것 같습니다.

5분마다라는게 문제인데... 이걸 구현 못하겠습니다.

고수님들의 도움 부탁드립니다.

rasungboy의 이미지

그리 어려울게 있나요?

gettimeofday 나 ftime 등 타임머 함수를 이용해서

5분마다 소켓으로 에이전트한테 하트비트 패킷을 쏘

고 응답을 받으면 될듯 하네요. 굳이 슬립을 걸 필요 없

이 말이죠.

익명 사용자의 이미지

heartbeat-1.2.3-tar.gz ??
http://www.linux-ha.org/download/

cjy1126의 이미지

gettimeofday나 ftime으로 윈도우의 SetTimer처럼 타이머처럼 5분마다 이벤트나 시그널이 발생하게 할수있나요?

위 2개 함수는 현재 시간을 구하는걸로 아는데 죄송하지만 5분마다 특정작업 a를 하는 예제라도 없을까요?

제가 감을 못잡아서 재차 질문하게 되네요.

alsong의 이미지

cjy1126 wrote:
5분마다 agent의 실행 유무를 알아야하는데, heart beat를 사용해야 한다는 생각까지는 했습니다.

문제는 구현을 어떻게 해야할지 모르겠습니다.

네트워크 프로그램이 아닌쪽으로 취업을해서(델파이) 유닉스와 네트워크 책을 모두 서울에 놔두고 내려와서 참고할것도 없습니다.

대략, 생각한 방법은 하나의 쓰레드를 생성해서 그 쓰레드에서 sleep(300) 후 heart beat를 보내고...

또 sleep(300) 후 heart beat를 생각합니다.

그런데, 아무리 생각해도 이건 아닌것 같습니다.

5분마다라는게 문제인데... 이걸 구현 못하겠습니다.

고수님들의 도움 부탁드립니다.

괜찮은 방법 같습니다.

그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.

익명 사용자의 이미지

에이전트가 delphi라면 timer VCL에서 5*60*1000으로 값을 넣고 이벤트 핸들러 달면 문제 없어보이는데요? 통신? 인디쓰고 아님 ics를 쓰거나해서 말입니다.

유닉스/리눅스인 경우 sleep(5*60)하고, 연결해서 하트비트 보내면될것이고,

서버사이드는 메시지가 도착한 시간을 저장하고 있다가 도착한 시간과 비교하면 될듯하고...

cjy1126의 이미지

서버에서 agent로 출석을 부르듯 존재 유무를 알려고 했습니다.

agent에서 서버로 나 있어요하고 알리는것도 되는군요.

왜 반대를 생각 못했는지 ㅡㅡ;

아직 델파이를 배우지 못해서 agent는 vc++을 사용합니다.

첫 취업한지 얼마 안되서요 ^^;

그럼 agent는 5분마다 heartbeat를 서버에 보내고,

서버는 5분마다 heartbeat가 없는 ip는 db에 종료로 저장하고, agent 리스트에서 삭제하면 되겠네요.

조언 감사드립니다. 좋은 하루되세요 ^^

cjy1126의 이미지

서버는 5분마다 heartbeat가 없는 ip는 db에 종료로 저장하고, agent 리스트에서 삭제하면 되겠네요.

바보네요.

이것도 어차피 5분 마다인데...

다른거 대강 마치고 이거 다시할려니까 여기서 또 걸리네요.

스레드 + sleep으로 결정했습니다.

rasungboy의 이미지

cjy1126 wrote:
서버는 5분마다 heartbeat가 없는 ip는 db에 종료로 저장하고, agent 리스트에서 삭제하면 되겠네요.

바보네요.

이것도 어차피 5분 마다인데...

다른거 대강 마치고 이거 다시할려니까 여기서 또 걸리네요.

스레드 + sleep으로 결정했습니다.

근데 궁금한건 agent 가 단순히 heartbeat 만 보내는일만

하는건가요? 다른일도 하면서 특정시간이 되면 heartbeat

를 서버에 응답하고 해야할텐데 슬립하는 동안에는 다른일을

하지 못하지 않습니까? 스레드를 쓴다면 모르겠지만...

cjy1126의 이미지

사원관리 프로그램입니다.

에이전트가 시작하면 출근 패킷을 보내고.

에이전트가 종료하면 퇴근 패킷을 보냅니다.

에이전트는 실행되면서 사원 컴퓨터에 유해프로세스(게임, 메신저) 같은걸 감시합니다.

에이전트에는 사원들간의 채팅기능(업무상)이 필요합니다.

사원들이 출근하고 에이전트를 비정상인 방법으로 죽인다면 퇴근 패킷이 서버로 날라가지 않습니다.

즉... 비정상적인 방법으로 에이전트를 죽였는지, 혹은 다운되서 죽었는지 알기위해서 heartbeat가 필요합니다.

구체적으로 내용을 안썼던건... 전에 질문올릴때 사원관리 프로그램이라니까 부정적인 분들이 계셔서 그랬습니다.

dreamer의 이미지

setitimer()를 써보면 어떨까요...

man setitimer
cjy1126의 이미지

리눅스 대강보고 2년간 윈도우 프로그래밍만 했더니 다 까먹었네요. ㅜ.ㅜ

기억도 안났다니... 슬픕니다.

기억나게 해주셔서 정말 감사합니다.

이번에는 좀 깊게해서 시그널 정복을... -_-;

댓글 달기

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