首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

IDTCPClient/Server有关问题

2012-02-05 
IDTCPClient/Server问题Delphi(Pascal) code//接收代码Len : 0AThread.Connection.ReadBuffer(Len, Size

IDTCPClient/Server问题

Delphi(Pascal) code
//接收代码                Len := 0;                AThread.Connection.ReadBuffer(Len, SizeOf(Buf));                Len := ntohs(Len);                Buf.Text := AThread.Connection.ReadString(Len);  //执行到这就跑了 为什么?                FStream := TFileStream.Create('D:\Test\' + Buf.Values['FileName'],fmCreate);                AThread.Connection.ReadStream(FStream, StrToInt(Buf.Values['Size']), False);                mmoLog.Lines.Add(Buf.Text);


Delphi(Pascal) code
//发送代码      sFileName := RightPartTwo(sFileNames[i], '\');      FStream := TFileStream.Create(sFileNames[i], fmOpenRead);      Insert(frmMain.mmoLog.Lines.Count, FRequest.Text);      FResponse.Clear;      FResponse.Add('[Response]');      FResponse.Add('Command=SaveData');      FResponse.Add('FileName=' + sFileName);      FResponse.Add('Size=' + IntToStr(FStream.Size));      FResponse.Add('Result=OK');      SendResponse;      FClient.WriteStream(FStream, True, False, FStream.Size);      FStream.Free;procedure TClientThread.SendResponse;var  Len: Integer;  Stream: TStringStream;begin  Stream := TStringStream.Create('');  Len := Length(FResponse.Text);  Len := htons(Len);  Stream.WriteBuffer(Len, SizeOf(Len));  Stream.WriteString(FResponse.Text);  FClient.WriteStream(Stream);  Stream.Free;end; 


请问这样的接受/发送代码有没有问题呢?

执行到我注释的地方就不往下执行了


[解决办法]
怎么发的怎么收,你用readstring收的话一定要用writestring发,要不就要手工最后加上回车换行,不然收了就跑飞,因为他停不下来,一直在等待,一般都用对应的函数,收发

热点排行