由于你描述的不很清楚,我只能按我所能理解的来写,最好你有源码说明
1.在应该放的地方( 废话 8-) ), 根据需要而定
2.估计你对文件IO处理有误,如文件指针位置与处理不符,打开共享方式不准确等
  另,处理文件似乎用TFileStream更佳
3.在异步socket通讯时,标记不同的TClientSocket可用TClinetsocket的SocketHandle属性值
   如
 procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
        Socket: TCustomWinSocket);
      begin
        OneClientSocket := Socket.SocketHandle;
        ...
        对OneClientSocket值作对应标记或保存处理,如用动态数组等等
        ...
      end;      在其他ServerSocket的事件中对特定Socket.SocketHandle作特定处理

解决方案 »

  1.   

    我不是高手,但我处理过发送文件的问题。也是定义了TFileStream类型的变量,请看
    function TServerForm.GetFile(const PathName: string): string;
    var
       fs : TFileStream;
    begin
       fs := TFileStream.Create(PathName, fmOpenRead or fmShareDenyWrite);
       SetLength(Result, fs.Size);
       fs.Read(Result[1], fs.Size);
       fs.Free;
    end;
    返回值是字符串类型。
    之后可以用ClientSocket1.SendText。
    在服务器那边用ServerSocket1.ReceiveText。
    用下面过程拔节收到的字符串保存到文件中:
    procedure TFilesForm.SetFileData(const FileData: string);
    var
       fs : TFileStream;
    begin
       SaveDialog1.FileName := CurFile;
       if SaveDialog1.Execute then begin
          fs := TFileStream.Create(SaveDialog1.FileName, fmCreate);
          fs.Write(FileData[1], Length(FileData));
          fs.Free;
       end;
    end;
      

  2.   

    为什么要有SendText呢,这个函数是针对字符串而言的,而我的文件是记录型的,不能用SendText/ReceiveText函数来操作吧