|
블로킹 : All or Nothing
논블로킹 : All or Somebody or Nothing
용맨소녀 님이 쓰신 글 :
: 자꾸 질문드려서 죄송해요.. 글 이해력이 딸리다보니..;;
:
: 받는 도중에 타임아웃된다든가 해서 다시 그 위치부터 이어받기 하는 그런 일은 없다는 말씀이죠?
:
: 타임 아웃되면 무조건 해당 패킷을 처음부터 다시 받는다는 말씀으로 알아들어도 될까요?
:
: 남병철.레조 님이 쓰신 글 :
: : 블로킹소켓에서 잘려오지는 않을것입니다.
: : (이론상 잘릴리 없지만 네트워크라는 것이 함께 만들어가는 예외의 세상이기 때문에.. -_ -..)
: :
: : 타임아웃되면 다시 받아야하고, 그러나 받은 데이타가 정상인지 간단한 크기 확인 같은것은 필요합니다.
: : 특히 장비들을 거쳐서(라우터 등등) 먼길을 오게될때 타임아웃 등에 걸릴수있습니다.
: :
: : 받은 데이타를 채크하는것은 ... 서버가 견고해야 할 수록 패킷 검사는 철저해져야합니다.
: : 서버 간보는 패킷 등등을 잘 걸러내려면... ㅋ
: : 물론 방화벽 등 기본은 충분히 갖춘 환경하에서도 마찬가지입니다.
: :
: : TCP/IP의 경우 3메가 파일도 그냥 툭~ 던지면 상대편에서 잘 받습니다.
: : 특히 내부 네트워크라면 장비의 버퍼가 넘치지 않는이상 UDP도 사실상 손실이 없습니다.
: :
: : 블로킹으로 주고 받는다면 타임아웃 처리와 간단한 패킷 크기 검사 정도로도 충분히 잘 동작합니다.
: :
: :
: :
: : 용맨소녀 님이 쓰신 글 :
: : : 답변 감사드리고요..
: : :
: : : 크게는 10만 적게는 1만바이트 정도의 패킷이 연달아 오는 경우가 있는데요.. 토탈 3메가 정도 됩니다..
: : :
: : : 서버에서 그 이상 안보내게 처리를 하고 있는데, 현재까지로는 내부 테스트에서 잘리는 경우는 없었거든요..
: : :
: : : 만약 잘리는 경우가 생기면 예외처리에서 time out이 돌려지는 건지요?
: : :
: : : time out 에러가 나면 다시 처음부터 받아야 하는건지.. 아니면 일부패킷을 받기 때문에 저장해 뒀다가 그 다음부터 받아야하는건지 모르겠네요..
: : :
: : : 이런 상황을 만들 수가 없어서 테스트가 안되네요.. 흠..
: : :
: : : nansama 님이 쓰신 글 :
: : : : 블로킹기능은 한개의 패킷을 수신할 때까지 TIME_OUT 시간 이내에서 대기 한다는 뜻이지
: : : : 특정 사이즈를 모두 수신 할 때까지 기다리는 기능이 아닙니다.
: : : :
: : : : 패킷은 공유기나 라우터의 MTU(Maximum Transmission Unit) 사이즈 이내에서 편의적으로 짤려서 옵니다.
: : : : 보통 MTU가 1500 바이트 보다 작기 때문에 그보다 큰 데이터를 한번에 수신 하는것은
: : : : 공유기나 라우터를 한개라도 거치는 환경에서는 불가능 합니다.
: : : :
: : : : 따라서 인디도 TCP나 UDP 레벨에서는 긴데이터는 잘려서 오기 때문에 여러번 수신해야 할 것입니다.
: : : : < 추가 :다만 자동으로 패킷을 여러번 송수신 해주는 TCPClient.IOHandler.WriteFile 이나 LargeStream 관련
: : : : 함수를 사용하면 자체적으로 한번에 보내는것 처럼 구현할 수 있어 보입니다.>
: : : :
: : : : 용맨소녀 님이 쓰신 글 :
: : : : : 잘리지 않을 것 같은데.. 지금까지 잘리지 않는다고 생각하고 썼고요..
: : : : :
: : : : : 100% 절대 잘릴 일이 없는건가요? 여기에 대해선 잘 모르겠어요..
|