TUDP소켓을 통해 다수의 피시에 파일을 전송하려 하는데
여러가지 문제로 고생하다 civilian님의 덕분에 어느정도 해결이 되었습니다.
civilian님 다시 한 번 감사드립니다.
이번엔 TBytes타입 때문에 고생하고 있는데요.
TUDP소켓으로는 대용량파일을 한번에 전송할 수 없어
파일을 MemoryStream에 담아 8192바이트씩 나누어 전송합니다.
Indy10을 사용하고 있어 IdUDPClient1.SendBuffer(AData) 이렇게 데이터를 전송할때
AData가 TBytes타입입니다.
그런데 8192바이트씩 나누어 전송하다가 파일의 끝부분이 되면
나머지부분이 8192바이트가 되지 않기 때문에 나머지 부분만 전송해야 하는데요.
문제는 TBytes타입은 용량이 모자라면 자동으로 늘려주지만
용량이 작아지는 경우에는 자동으로 줄여주지 않기 때문에
파일의 끝부분을 저장하고 남는 부분에는
이전에 담아 두었던 값들이 그대로 남아 전송이 됩니다.
그래서 TBytes에 담겨진 데이터를 전송하고 나면 TBytes의 길이를 초기화 해야 할것 같은데
초기화할 방법을 찾지 못하고 있습니다.
TBytes를 사용하고 난 다음 TBytes의 길이를 0으로 만들 수 있는 방법이 있으면 알려주시면 감사하겠습니다.
|