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;

  • 相关阅读:
    ActiveMQ的用途
    HTTP 状态码的完整列表
    Linux中脚本运行错误(坏的解释器:没有那个文件或目录)
    Linux下ping: unknown host www.baidu.com的解决办法
    python中的collection
    Table里嵌套ASPXGridView
    致2015
    WPF学习之Binding(二)
    WPF学习之Binding(一)
    WPF UI布局(Layout)
  • 原文地址:https://www.cnblogs.com/yangxuming/p/14322434.html
Copyright © 2011-2022 走看看