0

ばかげた質問で申し訳ありませんが、私は本当に解決策を見つけることができません。これは私がそれをやろうとしているこの方法です:

public void FillBuf(object sender)
{
    var handler = (Socket)sender;

    while (true)
    {
        received = 0;

        while (received < 1024)
        {
        int block = handler.Receive(bytes, received, bytes.Length - received, SocketFlags.None);
        received += block;
        }

        que.Enqueue(bytes);
    }

プログラムの冒頭で、FillBufメソッドを実行するスレッドを開始します。問題は、何らかの理由で 1024 バイトを受信しないことです。前もって感謝します。

4

1 に答える 1

0

サーバーが常に 1024 バイトを送信しているとは限らないようです。これは、それらを予期しているクライアント コードが、正しい量のデータを取得するまでハングすることを意味します。サーバーが予想されるバイト数を送信していることを確認するか、送信者がペイロードの先頭で送信するバイト数を示すことができるメカニズムをプロトコルに実装する必要があります。このようにして、クライアントは読み取るバイト数を知ることができます。

于 2014-01-05T10:27:08.237 に答える