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 已经提到的那样,一种解决方法可能是在客户端发送,sendbyte[0] = task.length;以便在服务器端知道会发生什么。然后,您可以只读出最后一条消息中的字节,而无需关心流中的其他内容。也可能有助于清除您的“流内”字节数组:Array.Clear(instream, startIndex, endIndex);

于 2015-07-30T15:48:19.340 回答