Delphi TidTCPServer и TidTCPClient, передающие запись

Мне нужна помощь в понимании того, как передать запись через Indy TCP Server/Client. У меня 2 программы, в клиентскую ставлю и в другую серверную. На клиенте на кнопке я помещаю соединение: Клиент - TIdTCPClient

Client.Connect();

И на стороне сервера я добавляю строку в памятку, что клиент подключен, на событие ServerConnect

Protocol.Lines.Add(TimeToStr(Time)+' connected ');

Чтобы отправить данные от клиента, у меня есть запись, которую я хочу для отправки:

Tmyrecord = record
IPStr: string[15];
end;

И у меня есть кнопка отправки:

procedure Tform1.ButtonSendClick(Sender: TObject);
  var
  MIRec: Tmyrecord;
 msRecInfo: TMemoryStream;
 begin
   MIRec.IPStr := '172.0.0.1';
   msRecInfo := TMemoryStream.Create;
   msRecInfo.Write(MIRec, SizeOf(MIRec));
    msRecInfo.Position := 0;
   Client.IOHandler.Write(msRecInfo);
 end;

На стороне сервера onexecute у меня есть следующий код, у меня такая же запись tmyrecord объявлена ​​​​на стороне сервера:

 procedure TServerFrmMain.ServerExecute(AContext: TIdContext);
 var
  MIRec: Tmyrecord;
  msRecInfo: TMemoryStream;
 begin
 if  AContext.Connection.Connected then
  begin
    AContext.Connection.IOHandler.CheckForDataOnSource(10);
    if not AContext.Connection.IOHandler.InputBufferIsEmpty then
   begin
     msRecInfo:= TMemoryStream.Create;
       AContext.Connection.IOHandler.ReadStream(msRecInfo);
     msRecInfo.Read(MIRec, sizeOf(msRecInfo));
    ShowMessage(MIRec.IPStr);
 end;
 end;
 end

Я не знаю, почему это не работает, почему Я не могу показать IP-адрес, который я написал со стороны клиента. Я хочу прочитать запись (msRecInfo) на стороне сервера, которую я отправляю со стороны клиента. Я хочу получить доступ к своим элементам записи, в этом случае я хочу прочитать элемент IPSTR моей записи. Когда я нажимаю кнопку отправки со стороны клиента, приложение зависает, серверная часть.

Заранее большое спасибо

7
задан Ken White 4 June 2012 в 01:27
поделиться