可能是数据量太大需要分片发送,看看这个帖子吧:
http://www.csdn.net/expert/topic/192/192584.shtm
用接收端的代码可接收大数据,

解决方案 »

  1.   

    你可以根据socket.sendbur(buffer)的返回值看看是不是都发送过去了?
      

  2.   

    to heifei():
      这个网页好像已经过期了,我看不到呀。怎么办,你能看到吗?跟我传过来好吗?谢谢!
      

  3.   

    收到的那两个正确吗?另外为什么要用string[30]??
    这个好象有问题,可能是结构体的长度不固定,最好统一使用字符数组
      

  4.   

    用string[30]是因为程序关闭时要将该结构数组保存起来,这样定义是保证文件的长度时固定的,收到的两个是正确的。
      

  5.   


    to jasminemao(jasmine):
    不是过期是帖子太长了,发送端发送位图,接收后写入流里,用Image1显示:
    procedure TForm4.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var
      Stream: TMemoryStream;
      nReceived: integer;
      Buffer: array [0..9999] of char;
    begin
          begin
            Stream := TMemoryStream.Create;
            Screen.Cursor := crHourglass;
            try
              nReceived := Socket.ReceiveBuf (Buffer, sizeof (Buffer));
              if nReceived > 0 then
              begin
                Stream.Write (Buffer, nReceived);
                Sleep (50);// The time set depend on you PC and NET speed.
              end;
              Stream.Position := 0;
              Image1.Picture.Bitmap.LoadFromStream (Stream);
            finally
              Stream.Free;
              Screen.Cursor := crDefault;
            end;
          end;
    end;
      

  6.   

    to heifei():
      你的用的是什么模式?如果我要传结构数组和提示信息(用来提示传过来的是什么),应该怎么发送和接收,谢谢!
      

  7.   

    to heifei():
      快点告诉我嘛,我会急死了,就下第一把,谢谢!
      

  8.   

    to heifei():
      不行呀,我用了你的方法还是老样子,我用的:buffer:Tprotocal; 而且sleep(2000);还是不行,这是为什么?
      

  9.   


    我用这个发小的字串数组都能受到呀.
    你记录中filecont是什么?
      

  10.   

    是一个text类型的文件,你发的是小的字符串?我的结构数组不小,但也不是太大