delphi 收发文件
时间: 2023-12-04 09:05:14 浏览: 80
在Delphi中,可以使用TClientSocket和TServerSocket组件来实现文件的收发。在TForm1中,可以使用TFileStream来处理文件流。在发送文件的按钮点击事件中,可以使用TClientSocket的Socket.SendStream方法将文件流发送给服务器。在TServerSocket的ClientRead事件中,可以使用TFileStream的LoadFromStream方法将接收到的文件流保存到本地文件中。以下是一个简单的示例代码:
```
// 发送文件
procedure TForm1.btnSendFileClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
fsSend := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
try
cs.Socket.SendStream(fsSend);
finally
fsSend.Free;
end;
end;
end;
// 接收文件
procedure TForm1.csRead(Sender: TObject; Socket: TCustomWinSocket);
begin
if not Assigned(fsRecv) then
begin
if SaveDialog1.Execute then
begin
fsRecv := TFileStream.Create(SaveDialog1.FileName, fmCreate);
tStart := True;
TickCount := GetTickCount;
end;
end;
if Assigned(fsRecv) then
begin
fsRecv.CopyFrom(Socket.ReceiveStream, Socket.ReceiveLength);
if Socket.ReceiveLength = 0 then
begin
fsRecv.Free;
fsRecv := nil;
tStart := False;
ShowMessage('文件接收完成');
end;
end;
end;
```
在TForm1的FormCreate事件中,可以设置TClientSocket和TServerSocket的属性,如IP地址、端口号等。在TForm1的BtncancelClick事件中,可以取消文件的发送操作。在TForm1的BtnexitClick事件中,可以退出程序。
请注意,以上代码只是一个简单的示例,实际应用中可能需要添加错误处理、进度条显示等功能。
#### 引用[.reference_title]
- *1* *2* [Delphi ServerSocket,ClientSocket示例](https://blog.csdn.net/genispan/article/details/3132417)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [delphi调用外部程序打开文件](https://blog.csdn.net/weixin_45222383/article/details/91442882)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文