소켓 접속유지를 위한 방법중......
글쓴이: MrLord / 작성시간: 수, 2005/03/02 - 9:14오후
서버와 클라이언트로 구성된 형태 인데요
서버는 클라이언트의 접속이 유지되고 있는지 확인해야 하죵..
그래서 하나의 쓰레드에서 접속이 되어 있는지를 확인합니다.
직접통신하는 건 쓰레드풀로 구성된 쓰레드들이구요..정리하자면
A쓰레드(쓰레드 풀) : 클라이언트와 통신하는 쓰레드
B쓰레드 : 접속이 올바른지 확인...
소켓디스크립션과 각종 정보를 구조체에 담아 전역변수로 두었구요
B쓰레드에서 접속이 비정상적으로 종료된것들(랜선이 갑자기 빠진.. 혹은 그냥 꺼져버린 )
을 확인하는데까진 성공했는데요. 직접 접속을 유지하는 A쓰레드에서
알게 할수 있는 방법이 없네요.. A쓰레드는 epoll을 써서 천개정도
의 접속을 유지하고 있구요.. 간단하게 생각해서 B쓰레드에서
비정상 종료된 소켓을 close()하면 A쓰레드의 epoll에서 EPOLLERR나 여타 다른것들이 리턴되서
종료작업(구조체의 삭제, epoll에서 제거 등등..)이 이루어
질줄 알았는데 (당연히 정상종료시에는 작업함) 아무런 반응
이 없더군요.. 뭔가 소켓에 임의로 에러를 발생시키면 epoll이
리턴을 할것두 같은데 어떻게 해야 할지를 모르겠네요..
같은 경험이 있으신분들의 조언 을 부타드리겠습니다.
너무 급하게 쓰는거라 두서가 없을수도 있는데 이행 부탁드리겠습니다. ^^;
그럼 오늘 하루도 행복한 하루되시길......
Forums:
댓글 달기