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;

  • 相关阅读:
    Linux Shell 01 脚本与变量
    Linux下shell颜色配置
    Linux下Redis安装及配置
    Linux Shell 03 条件测试
    OSX下VirtualBox安装CentOS
    Log4j配置与使用
    Linux 环境变量的配置
    OS X下安装Redis及配置开机启动
    圈复杂度
    (转)Qt Model/View 学习笔记 (一)——Qt Model/View模式简介
  • 原文地址:https://www.cnblogs.com/yangxuming/p/14322434.html
Copyright © 2011-2022 走看看