0

サーバーが文字列メッセージをクライアントに継続的に送信し、クライアントがネットワークストリームを介してそのメッセージを読み取るWindowsアプリケーション(サーバークライアント通信)を開発しています。ネットワーク ストリーム クライアントからメッセージを読み取った後、ネットワーク ストリームをフラッシュしますが、古いメッセージはネットワーク ストリームに残ります。これは、サーバー側のネットワークストリームにメッセージを継続的に書き込んでいるために発生していると思います。

コード クライアント:

clientSocket.Connect("192.XXX.X.XX", 8888);
label1.Text = "Client Socket Program - Server Connected ...";
NetworkStream serverStream = clientSocket.GetStream();
string returndata = "";
while ((true))
{
    byte[] inStream = new byte[10025];
    serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
    returndata = System.Text.Encoding.ASCII.GetString(inStream);
    serverStream.Flush();
}

サーバ側 :

TcpListener serverSocket = new TcpListener(8888);
TcpClient clientSocket = default(TcpClient);
NetworkStream networkStream = null;
serverSocket.Start();
clientSocket = serverSocket.AcceptTcpClient();
networkStream = clientSocket.GetStream();
Byte[] sendBytes = Encoding.ASCII.GetBytes(task);
networkStream.Write(sendBytes, 0, sendBytes.Length);
networkStream.Flush();

この問題を解決する方法を教えてください。

4

1 に答える 1

1

Jaroen が既に述べたように、1 つの回避策は、クライアント側で送信して、サーバー側sendbyte[0] = task.length;で何を期待するかを知ることです。その後、最後のメッセージからバイトのみを読み取ることができ、ストリーム内のその後の内容を気にする必要はありません。「インストリーム」バイト配列をクリアするのにも役立つ場合があります。Array.Clear(instream, startIndex, endIndex);

于 2015-07-30T15:48:19.340 に答える