我想通过SOCKET在两台机器上互相传文件,在客户端我这样做:
FileStream.create(filename,....);
MemoryStream.copyfrom(FileStream);
ClientSocket1.sendstream(MemoryStream);
可我在服务端的ONCLientRead中没有收到。
这是怎么回事?
我想问一下谁有传文件的源码,要上传的文件可能是二进制文件,
最好只用SOCKET传,因为我是在UNIX上用C与WINDOWS上用
DELPHI通讯的。

解决方案 »

  1.   

    呵,我在传之前做了个MemoryStream.postion:=0就成功了。
    不过还有个问题,就是我做MemoryStream.Free是程序出错,
    是不是TmemoryStream不需要做Free?
      

  2.   

    给你一段代码,不管是什么文件都可以传的
    var
      Fs : TFileStream;
      Buf : pointer;
      Size : integer;
    begin
      SendOrReceive := SendFile;
      Fs := TFileStream.Create(OpenDialogSendFile.FileName,fmOpenRead or fmShareDenyNone);
      if Fs.Size > 1024 then
      Size := 1024
      else
      Size := fs.Size;
      GetMem(Buf,Size);
      Fs.Seek(0,soFromBeginning);
      ClientSocket.Socket.SendBuf(Buf^,Size);
      Send_Size := Size;
      Fs.Destroy;
      FreeMem(Buf);
    end;
      

  3.   

    上面的SendOrReceive := SendFile;可以不要,是我程序中的一个标志