제 뜻은 그런 뜻이 아니었는데... 설명이 부족했나 봅니다.
http://www.delmadang.com/cwb-bin/CrazyWWWBoard.exe?db=dmdlec&mode=read&num=1585&page=1&backdepth=1
위 링크에 가보시면.. 관련한 내용이 아주 잘 정리되어 있습니다.
4000king이라는 화상채팅 솔루션 개발업체 사장님게서 경험담을 정리해 놓으신 거죠.
피가되고 살이되는 정보라 생각합니다.
그중에 이런 내용이 나옵니다.
//---------------------------------------------
- SendBuf
ㅋㅋㅋㅋㅋㅋㅋㅋ. 못믿을년 SendBuf.
난 이것을 주로 사용한다. 못믿을년? 근데 주로 사용?
데이터 전송에는 이것만한 것이 없다.
SendBuf 의 도움말을 잘 보도록 하자.
소켓 버퍼에 다른값이 있어서 쓰기가 안될경우 -1 을 리턴한다.
물론 전송은 안된다.
에잉~ 난 전송해야 하는데..안되면..이거 못쓰쥐....이런 분이라면 아래를 봐라.
While SendBuf()= -1 do begin
end;
이러면 확실하게 전송된다.
하지만 조심해서 사용해야 한다.
일정한 Network Bandwidth 에서 소켓의 사용량이 많을 경우 루프를 계속 돌아버림으
로써 CPU 의 오버헤드를 가져온다.
//---------------------------------------------
하여간, 설명이 부족했나 봅니다. 제가 드리고 싶었던 말은
만약 보내야 하는데... 이미 소켙버퍼에 아직 안보내진 것이 남아 있다면..
보내고 싶어도 못 보내는 것 입니다.
소켙버퍼에 넣어야 시스템이 보낼텐데.. 더 이상 자리가 없어 넣지를 못하니..
버퍼 크기를 무한정 늘이거나 해야할 텐데.. 그러려면 소켙 드라이버를 다시 짜야 되겠죠.
그래도 문제인 것이 만약 그렇다면 1기가짜리 파일을 보내는 중에 랜선을 뽑아버리면
1기가짜리 버퍼가 생기겠죠.
반대의 경우도 마찬가지 입니다.
SendText로 보내고 ReceiveText로 받을때 한 라인이 다 온다고 생각하지 마시기 바랍니다.
보낼때는 "볼랜드 포럼"을 한번에 보낼 수도 있을지 모르지만.....
올때는 "볼랜드 포럼"이 한번에 올 수도 있고..
"볼랜드"
" 포럼"
이렇게 두번에 올 수도 있지요.
그리고 이건 델파이 소켙의 버그가 아닙니다. 모든 상황에서 동일하게 적용되는 사항입니다.
비주얼 베이직에서도 비주얼 c에서도 마찬가지입니다. 단지 네트웤 프로그래밍시 유의해야할 사항일
뿐입니다.
도움말을 잘 읽으시고, 이러한 처리를 해주어야 하는지 아님 알아서 해주는지 잘 구분하셔서
사용하시기 바랍니다.
도움이 되셨기를...