读书人

IDTCPClient/Server有关问题

发布时间: 2012-02-05 12:07:14 作者: rapoo

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发,要不就要手工最后加上回车换行,不然收了就跑飞,因为他停不下来,一直在等待,一般都用对应的函数,收发

读书人网 >.NET

热点推荐