zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    mysql将一个表的数据 重复复制多份到表中
    PHP中将指定文本内容导入到word中
    系统安全-SElinux
    通过身份证号码提取年龄,性别
    MySQL-获取某天的数据
    mysql-介绍、MySQL部署、数据类型、存储引擎
    监控系统-ELK
    监控系统-Grafana
    监控系统-zabbix
    监控系统-openfalcon
  • 原文地址:https://www.cnblogs.com/yangxuming/p/14322434.html
Copyright © 2011-2022 走看看