我定义的一个通讯的格式如下:
Type
 TCommDataFormat=record
  Head:Byte;
  SerialNumber:Byte;//帧序号
  StreamLen:word;//为下个字段的长度。
  Stream:array  of char;
 end;
C端:的处理:
var 
temstr:TCommDataFormat;m:integer;str:string;UDP1: TNMUDP; MyStream: TMemoryStream;
begin 
  str:='abcdefghijkmn';
  with TmpStr do
            begin
           Head:=$30;
           SerialNumber:=1;
           StreamLen:=length(str);
           setlength(stream,streamLen);
           for i:=0 to m-1 do
            Stream[i]:=(str[i+1]);
         end;
//发送:
      MyStream:=TMemoryStream.Create;
        try
        MyStream.Write(TmpStr, sizeof(TCommDataFormat));
        LoginUDP.SendStream(mystream);
         finally
          mystream.SaveToFile('c.txt');
          MyStream.Free;
        end;
服务端: 
  var
  UDPServer: TIdUDPServer;//delphi6自带的UDPSERVER控件。
implement
TUDPMainForm.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var 
 test:TCommDataFormat; DataStringStream: TMemoryStream;
begin
 DataStringStream := TMemoryStream.Create;
  try
  DataStringStream.CopyFrom(AData, AData.Size);
  if DataStringStream.Size<>sizeof(TCommDataFormat) then
      begin
        showmessage('接受有错误!');
      end;
  DataStringStream.Read(test,DataStringStream.Size);
  showmessage(inttostr(test.Head));
  showmessage(inttostr(test.SerNumber));
  showmessage(inttostr(test.StreamLen));
  finally
  DataStringStream.SaveToFile('d.txt');
  DataStringStream.Free;
  end;
end
///////////////////////////////////////////
上面为我实现的代码。我的问题是这样的。
我收到的在服务端中,那三个showmessage()出来的东西都为0,但是他们两个流另存的文件,c.txt,d.txt的内容用HEX表示的内容是一模一样的。但是收到结果我想解析出来都是0,这是为什么呀?
而且我应该怎样解析出那个记录的最后一个字段呀stream。
谢谢呀!我现在就100分了,不够等以后我再给。请教。
由于现在的服务端是我自己的测试断,我是要和另外一个VC的服务端连接。应次他发送给我的UDP包也应该是那个记录格式,我来解析处理,请指教,谢谢谢谢·!!