由于你描述的不很清楚,我只能按我所能理解的来写,最好你有源码说明
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.在应该放的地方( 废话 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作特定处理
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;