UDP통신으로 Server에 데이터 보내기
안녕하세요?
오늘 인사를 두번이나 하게 되네요....
제가 프로그램을 작성하는데 버그가 있어서 이렇게 글을 올립니다.
소스를 우격다짐으로 작성해서 그런지 어떻게 해야할지 몰라 이렇게 글을 올리게 되었습니다.
우선 저는 udp통신으로 클라이언트(5대 미만)에서 4초마다 서버에 cpu사용량을 보내 서버에서는 받은 ip, cup정보로 가장 idle한 클라이언트로 load balace하는 프로그램을 작성하고 있습니다.
서버에서는 클라이언트가 접속할때마다 해당 쓰레드가 생성되어 클라이언트가 8초, 즉 4초마다 도착할 데이터가 2회이상 도착하지 않을시 해당 노드, 쓰레드를 제거하려합니다.
문제로는
1. 클라이언트가 1대 접속하고 잠시후 "CTRL + C"로 시그널이 발생하면
정상적으로 8초가 지나면 노드, 쓰레드가 제거가 안된다.
예로 들어,쓰레드 함수에 작성된 printf로 출력하면 8초 후에도
출력된다.
2. 1번과 거의 동일하나 여러 클라이언트가 접속하고 하나씩 종료할시
정상적으로 노드와 쓰레드가 제거되지 않은것으로 추정된다.
8초 후에도 해당 ip, status=0으로 찍힌다.
그리고 마지막 남은 클라이언트를 종료하면 계속 남은 ip, status=1
이 출력된다. 다시 접속을 끊었던 클라이언트가 다시 접속하면 그때서야
남아있던 ip, status = 0이 된다.
3. 3개의 클라이언트가 접속했을시 동시에 클라이언트가 접속을 끊으면
8초후에도 계속 살아있다.
제가 소스를 좀 보시고 어디가 이상있는지 좀 알려주세요..
답변 부탁드립니다.
첨부 | 파일 크기 |
---|---|
![]() | 17.94 KB |
무한루프가 아닌가요???Thread 함수인 schedule_func(
무한루프가 아닌가요???
Thread 함수인 schedule_func()에보면 for문이 cout과 sleep()만을 계속적으로
돌리기 때문에 자기자신은 죽지 않게 되겠네요.
로 저 비교문이 for(;; )안에 있어야할것 같은데요...
------------------------------
좋은 하루 되세요.
답변 고맙습니다.덕택에 소스는 수정을 했습니다.수고하세요..
답변 고맙습니다.
덕택에 소스는 수정을 했습니다.
수고하세요..
댓글 달기