| [ CnUnix ] in KIDS 글 쓴 이(By): ahsarang (..........) 날 짜 (Date): 2004년 1월 26일 월요일 오후 07시 23분 44초 제 목(Title): [Q] select 질문입니닷! non-blocking I/O에 select쓰고있는데요. 십여개 connection을 만들고 열라 돌리다가, 한~참 쉰다음 다시 돌리면 먹통이 됩니다. 상황을 좀 구체적으로 설명 드리자면... (귀찮더라도 쓴 성의를 봐서 읽어주세용 T.T);; 그림1. daemon A daemon B <------------- client ---> <------------- client ---> <------------- client ---> <------------- client ---> <------------- client ---> <------------- <------------- B가 A로 connect한 상태에서 A는 client가 들어오면 B의 connection과 1:1로 mapping시킵니다. client가 close되면 해당 client가 사용하던 B->A connection도 함께 close되고 B는 A로의 새로운 connection을 생성합니다. 여기서!~ 첨 A/B를 실행하고 client들 열라 붙여서 test하면 잘 돕니다. 근데 한참(1시간정도?) 놀게 놔둔 후 다시 client를 붙여보면 A까지는 잘 붙는데 A가 B connection하나 선택해서 write하면 write까지는 성공하는데, B는 A가 write한 것을 읽지 못합니다. (B의 select가 return되지 않습니다.) A/B모두 non-blocking/select로 대기하고 있습니다. B에 어떤 문제가 있는 걸까요? 혹 A의 write후 flush를 해줘야하요? OS independent해야합니다. 현재 A는 Sun이고 B는 FreeBSD입니다 뭐가 문젤까요??? -.-;; |