Почему Net :: SSH2 :: File разрешает только 32500 байт на запись? - PullRequest
2 голосов
/ 14 сентября 2011

У меня есть компьютер с Redhat 5.5 Linux, использующий Perl Net :: SSH2 для sftp файла.Похоже, что когда файловый дескриптор открыт для записи, я могу записать максимальную длину буфера в 32500 байт для каждого вызова $ fh-> write ($ buffer).Мне пришлось ограничить чтение файла 30 * 1024 байтами, прежде чем записывать его в файловый дескриптор Net :: SSH2 :: File.Должен ли я быть в состоянии написать больший буфер?Размер файла, который я копирую, составляет около 800 КБ.Буфер, о котором я говорю, - это размер блока записи.Я могу постоянно писать этот размер куска.

Ответы [ 2 ]

4 голосов
/ 15 сентября 2011

Это явно жестко заданный предел в Net :: SSH2. Смотрите здесь:

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

0 голосов
/ 15 сентября 2011

Большинство SSH серверов ограничивают размер пакетов, которые они могут обрабатывать, до некоторого размера около 32 КБ, поэтому клиенты делают то же самое для совместимости.

Вы можете использовать Net :: SFTP :: Foreign , который не имеет этого ограничения (его буферы будут увеличиваться для размещения данных любой длины, насколько это доступно), и он может работать поверх Net :: SSH2 через Net_SSH2backend Net :: SFTP :: Foreign :: Backend :: Net_SSH2 или просто используйте двоичный клиент OpenSSH.

...