阅读 137

delphi libssh2 无法立即完成一个非阻止性套接字操作

由于delphi项目中,有个把本地文件上传到Linux服务器的需求。

在经过讨论,准备使用sftp 的方式上传文件。后端不需要开发java服务。其他方式实现:ftp应该是可以实现,但是SFTP使用加密传输认证信息和传输的数据,所以使用SFTP相对于FTP安全。

或者使用pscp.exe DOS命令行执行来上传文件。

所以我从 git上 https://github.com/pult/libssh2_delphi 下载这个项目。

用xe10 seattle 编译其中的demo 没有问题,但是在使用exe向服务器上传文件的时候,只要文件稍微超过几M,就会提示异常“ 无法立即完成一个非阻止性套接字操作”。

在度娘一圈,发现需要设置 client.Blocking = true  ,应该是C#的写法。所以参考它,我在formcreate的时候加了 红色 那行,再次上传文件就正常了。

SFTP := TSFTPClient.Create(Self);
SFTP.DebugMode := True; // ouput debug info over Windows.OutputDebugString
SFTP.OnTransferProgress := OnProgress;
SFTP.OnAuthFailed := OnAuthFailed;
SFTP.OnCantChangeStartDir := OnCantChangeStartDir;
SFTP.OnKeybdInteractive := OnKeybdInteractive;
SFTP.BlockingMode := False;   // 源码默认是true,应该改成false 
StatusBar1.Panels[1].Text := ‘libssh2 ver: ‘ + SFTP.LibraryVersion;

原文:https://www.cnblogs.com/yangxuming/p/14322434.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐