[완료] sendto, recvfrom 호출시 blocking되는 현상
글쓴이: tacore / 작성시간: 금, 2008/10/17 - 12:13오후
sendto, recvfrom 사용할때
블록킹 되는 현상이 발생해서 검색해보다가 의문점이 있어서 질문 드립니다.
첫번째
sendto는 소켓이 Blocking모드이든 Non-Blocking모드이든 전송할수 있는 최대 크기를 벗어나면 블로킹에 빠지나요?
두번째는
네트웍이이 잘 되다가 중간에 네트웍이 끊긴 상태에서 sendto 호출을 할 경우에 블로킹 상태에 빠질수 있나요?
부분만 보고 이해하려니 힘드네요
위 두가지 경우를 확인하려면 어느 부분의 이해가 더 필요한가요??
Forums:
blokcing 일 때만 blocking 될 수 있습니다.
non blocking mode 에서는 blocking 되지 않고 빠져 나옵니다.
blocking mode 에서 blocking 되는 조건(?)은 write buffer가 다 찼는데 send하려는 경우입니다. send 하려는 내용이 write buffer보다 크거나, 이전에 send 한 내용으로 write buffer가 여유가 없는데 send 하려거나 이럴 때 write buffer에 send 하려는 내용을 다 쓸 수 있을 때 까지 blocking 됩니다.
따라서 두번째 질문하신 것처럼 중간에 네트웍이 끊길 때에도 write buffer가 비워지지 않게 되기 때문에 send하면 blocking 될 수 있습니다.
답변 감사합니다^^
답변 주신것 보고 차근히 살펴보니
문제는 sendto, recvfrom에 있는것이 아니고 다른곳에 있었습니다.
검색을 해보니 blocking에 빠질수 밖에 없는 함수들도 있더라구요
해결은 잘 되었는데.. 좀더 공부해야 겠어요..
저도 언젠가 이곳에 답변을 +,.+
큰 도움이 되었습니다~ 감사합니다^^
댓글 달기