CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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입니다

   뭐가 문젤까요??? -.-;;






[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.