|
안녕하세요? 홍환민입니다.
기본 소켓의 문제라기 보다는 원래 윈도우즈 소켓이 그렇습니다. (리눅스나 유닉스의 소켓도 마찬가지..)
TCP/IP 자체가 그런 방식으로 되어 있습니다.
데이터를 1000 바이트를 보냈다고 했을때 그것이 쪼개져서 갈수도 있고
다음번에 보내는 1000바이트와 합쳐져서 2000바이트로 보내질 수도 있고,
받는 측에서도 보낸 측이 쪼개서 보냈으므로 500 바이트만 먼저 받을 수도 있습니다.
그러므로 이에 대한 처리가 필수적입니다.
윈도우즈 소켓으로 직접 구현하거나 기본 소켓 컴포넌트를 쓴다면 그렇게 해야 하고요.
좀더 복잡한 네트웍 컴포넌트들은 편의상 내부적으로 이런걸 처리를 해 줍니다.
행복하세요.
PS> 위에 제가 간단히 설명했는데 이에 대한 자료는 좋은 네트웍 책에 보면 대부분 나오는데...
하나 추천드리자면, 마이크로소프트 프레스에서 나온 마이크로소프트 윈삭 프로그래밍이던가.. ;;;;
제목은 잘 기억이 안나고 "공식 학습 지정서" 라고 되어 있고 검은색 바탕에 옆에가 뻘겋게 되어있고,
세컨드 에디션 까지 나온 책이 있습니다.
신동승,無敵 님이 쓰신 글 :
: 안녕하세요. 신동승입니다.
:
: 그동안 C++ Builder 6에서 기본 제공하는 Socket Component를 쓰면서 별 문제 없이 잘 써 왔는데
:
: 평소에 기껏해야 512byte도 안 되는 데이터를 송수신하다가
:
: 이번에 좀 많은 양의 데이터(5k ~ 20kbyte)를 전송하려고 합니다.
:
: 그런데 예전에 기본 Socket Component가 문제가 많다고 해서..
:
: 쓰기에 웬지 꺼름칙합니다.
:
: 무슨 문제가 있는지 가르쳐 주시거나 참고할만한 URL을 좀 알려 주세요.
:
: 즐거운 9월 되세요.
|