IdiPMultiCastServer와 IdiPMultiCastClient로 메세지를 주고 받는 것은 아래와 같이 해서 성공했습니다.
문제 없이 잘 되는것 같구요.(나중에 무슨 문제가 있을지는 몰라도......)
======== 서버측 ==========
var
ByteArray : TBytes;
begin
IdIPMCastServer1.Active := true;
IdIPMCastServer1.Send(BytesOf('MSG'));
IdIPMCastServer1.Send(BytesOf(Edit1.Text));
IdIPMCastServer1.Active := False;
========= 클라이언트 측 ==========
procedure TForm1.IdIPMCastClient1IPMCastRead(Sender: TObject; const AData: TBytes; ABinding: TIdSocketHandle);
var
Str : String;
ASource : TBytes;
begin
Str := TEncoding.Default.GetString(AData);
Memo1.Lines.Add(Str)
end;
메세지전송은 이렇게 해서 되긴 했는데 이번엔 파일전송을 해야 합니다.
자료가 없어 이것 저것 찾아가며 아래처럼 하긴 했는데요.
그런데 파일전송은 어떻게 해야 하는지 도무지 감을 못잡겠습니다.
인터넷 아무리 뒤져도 샘플조차 없고 해외사이트를 뒤져보면
샘플코드는 없고 설명만 있는데 영어도 아니고 중국어도 아니고 일본어도 아닌 희한한 문자라 알아먹을 수도 없고...
누구 아시는 분 계시면 좀 도와주세요.
=========서버 측=================
var
FileName : String;
AStream : tmemorystream;
buf: tBytes;
begin
IF OpenDialog1.Execute Then
Begin
AStream:=tmemorystream.Create;
AStream.LoadFromFile(OpenDialog1.FileName);
buf := AStream.Memory;
buf := TBytes(AStream.Memory);
IdIPMCastServer1.Active := true;
IdIPMCastServer1.Send(BytesOf('File'));
IdIPMCastServer1.Send(BytesOf(OpenDialog1.FileName));
IdIPMCastServer1.Binding.Send(buf,0,AStream.Size); <==== 에러
IdIPMCastServer1.Active := False;
FreeAndNil(AStream);
End;
End;
========= 클라이언트 측 =========
클라이언트에서는 어떻게 해야 하는지 아예 모르겠습니다. ㅡ,.ㅡ
멀티케스트로 파일전송하는 방법을 몰라서 12대나 되는 피시에 2GB짜리 파일을 무식하게 1대씩 순서대로 보내고 있네요....ㅡ,.ㅡ
|