为什么 Net::SSH2::File 只允许写入 32500 字节?

发布于 2024-12-04 08:47:08 字数 241 浏览 0 评论 0原文

我有一台 Redhat 5.5 Linux 机器,使用 Perl Net::SSH2 来 sftp 文件。看来,一旦打开文件句柄进行写入,每次调用 $fh->write($buffer) 时,我只能写入最大缓冲区长度 32500 字节。在将文件写入 Net::SSH2::File 文件句柄之前,我必须将文件读取限制为 30*1024 字节。我不应该能够写入更大的缓冲区吗?我复制的文件大小约为 800k。我所说的缓冲区是写入块的大小。我可以不断地写这个块大小。

I have a Redhat 5.5 Linux machine using Perl Net::SSH2 to sftp a file. It appears that once the filehandle is opened for writing, I can only write a maximum buffer length of 32500 bytes for each call to $fh->write($buffer). I've had to limit my file read to 30*1024 bytes before writing it to the Net::SSH2::File filehandle. Shouldn't I be able to write a larger buffer? The filesize I am copying is about 800k. The buffer I am talking about is the size of the write chunk. I can continually write this chunk size.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

橘和柠 2024-12-11 08:47:08

这显然是 Net::SSH2 中的硬编码限制。请参阅此处:

http://www.libssh2.org/邮件/libssh2-devel-archive-2010-06/0104.shtml

It's apparently a hard-coded limit in Net::SSH2. See here:

http://www.libssh2.org/mail/libssh2-devel-archive-2010-06/0104.shtml

得不到的就毁灭 2024-12-11 08:47:08

大多数 SSH 服务器将它们可以处理的数据包大小限制为 32Kb 左右,因此客户端也会这样做以实现互操作性。

您可以使用 Net::SFTP::Foreign,这不会没有这个限制(只要内存可用,它的缓冲区就会增长以容纳任何长度的数据)并且它可以通过 Net_SSH2 后端在 Net::SSH2 之上运行Net::SFTP::Foreign::后端: :Net_SSH2 或仅使用 OpenSSH 二进制客户端。

Most SSH servers limit the size of the packets they can handle to some size around 32Kb and so clients do the same for interoperability.

You can use Net::SFTP::Foreign, that doesn't have that limitation (its buffers will grow to accommodate data of any length as far as memory is available) and it can run on top of Net::SSH2 via the Net_SSH2 backend Net::SFTP::Foreign::Backend::Net_SSH2 or just use the OpenSSH binary client.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文