[ CnUnix ] in KIDS 글 쓴 이(By): zeo (ZeoDtr) 날 짜 (Date): 2006년 12월 8일 금요일 오후 12시 30분 21초 제 목(Title): Re: Listen socket을 close하지 않고 conn > 그런데 conn reset을 받으면 클라이언트가 '내가 보낸 명령을 처리하다가 잘못되서 > 죽은' 건지 'shotdown 상황에 접어들어서 죽은' 건지 알 수가 없다는 겁니다. > 그걸 구별하고 싶은건데 마땅한 방법이 없네요. connection reset 자체가 왜 일어났는지, 또 어느 시점에 일어났는지 정확히 알 수 없을 텐데요. 꼭 명령 처리하다 잘못된 것 말고도 실제로 네트웍에 장애가 있었을 수도 있고, 서버가 다른 버그로 휙 죽은 걸 수도 있고... 정상적인 명령 처리 '후' 답을 보내려다 죽어버린 것일 수도 있고... 저라면 client 측에서 명령에 대한 결과를 받기 전에 어떤 오류라도 나면 client가 그냥 다시 접속해서 명령을 다시 처리하도록 하겠습니다. 서버에서는 그렇게 명령을 potentially 중복 처리해도 되도록 만들어 놓구요. 아랫단에서 처리하려고 애쓰지 말고 어차피 네트워크란 불안한 거라고 간주하고 윗단에서 논리적으로 적절히 대책을 세우는 게 바람직할 것 같네요. ZZZZZ "Why are they trying to kill me?" zZ eeee ooo "Because they don't know you are already dead." zZ Eeee O O ZZZZZ Eeee OOO - Devil Doll, 'The Girl Who Was...Death' |