在 sftp 服务器中处理 ssh window_adjust 消息

问题描述 投票:0回答:0

我有 sftp 服务器。当我将文件 (SSH_FXP_WRITE) 上传到服务器时(我使用 filezilla 客户端完成),如果文件大于窗口大小,在我发送 Window_Adjust_Message 后,我会收到 1 或 2 条我无法解析的垃圾数据消息合法的 sftp 消息。

// Ssh library get data on chanel after authontication
OnData(byte[] data)
{
    AdjustWindowMessage((uint) data.Length);
    
    // Send to sftp subsystem to parse and handle request 
    HandleData(data);
}

    AdjustWindowMessage(uint messageLength)
{
    SWindowSize -= messageLength;
    if(SWindowSize <= SMaxSize)
    {
        connection.session.SendMessage(new WindowAdjustMessage
        {
            ResChannel = ClientId;
            BytesToAdd = SInitWindowSize;
        });
        SWindowSize = SInitWindowSize;
    }
}

常规数据包大小约为 16000 字节,发送调整消息后收到的 1 或 2 个数据包较小但大小不总是相同 l 这些消息是什么以及我应该如何处理它

我没有弄清楚它是否是在我发送调整消息之前留下的临时数据的缓冲区。 但是我可以看到,第一个字节(我必须从那里得到大小)非常大

c# ssh sftp filezilla
© www.soinside.com 2019 - 2024. All rights reserved.