あい!
私はftpファイルリストを取得しようとしていますが、それを行う小さなライブラリをすでに取得しています。問題は、すべてのデータが受信されるまで Socket.Receive() 関数がブロックされないことです。その行にブレークポイントを設定すると、すべてのデータが受信されますが、そうしないと 38 バイトしかありません (約 380 になるはずです)。
コードは次のとおりです。
While True
Dim bytes As Integer = cSocket.Receive(buffer, buffer.Length, SocketFlags.None)
mes += ASCII.GetString(buffer, 0, bytes)
If bytes < buffer.Length Then
Exit While
End If
End While
私が言ったように:ブレークポイントが .Receive 部分のある行に設定されている場合に機能します。1 つの余分なループを保証する回避策を使用できますが、それは非常に汚いようです。何か案は?
//編集: もう少し情報を追加させてください。どのくらいのデータが受信されるかわかりません。コードは、ftp サーバーからデータを受信する関数からのものです。メッセージが CRLF で終わったら停止できると思っていましたが、リストされている各ファイル間に CRLF があるため、停止できません。例: file1.textCRLFfile2.txtCLRFfile3.txtCRLF
receive を呼び出すと、一覧表示するファイルがさらにある場合でも、最後に CRLF を持つ 1 つのファイルしか返されないことがあります。したがって、この状態は私には不安定に見えます。