인디서버로 받을때요..
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
senddata: string;
begin
While AThread.Connection.Connected and (not AThread.Terminated) do
begin
senddata := AThread.Connection.ReadString(58);
end;
end;
이런식으로 받는데..문제는..받는 데이터의 종류가 4종류입니다..
길이가 다 다르기 때문에...길이에 맞쳐서 실행되게 할라고 했는데 잘 안되네요..
여러종류의 데이터를 받을때는 어떻게 해야하는지..
길이는 199,58,45,52 이렇게 네 종류가 있는뎅...
위의 방법은 정해진 길이가 찰때까지 받더군요..
어떻게 하면..길이별 데이터 별로 따로 이벤트를줄수 있는지 알려주세욥..
그리고 서버에서 클라이언트로 데이터를 보내는 방법 좀...텍스트로 보내야합니당...
writeString를 썼더니..TStrings 값이라고..에러가 뜨네요ㅠ.ㅠ
데이타가 다 올때까지 기다리던가?..가물가물합니당.
만약에 데이타가 다올때까지 기다린다면 데이타 구조를 좀 수정하심이 좋을듯하군요.
TDatatype = record
nsize:integer;
nbuf: array[0..200] of char;
end;
이런식으로선언하셔서 보내실때 구조체로 보내시구요. 받으실때는
ReceiveBuf를 쓰셔서 먼저 4바이트 받으셔서 사이즈를 알아낸다음에 다시 원래 데이타를 읽으시면 해결되실듯합니다.
nsize에 보낼 데이타에 대한 사이즈값을 넣어서보내는거졉..
이상 허접답변입니당.