要清除 TCP 服务器上一次返回的数据,可以在客户端代码中添加一个接收数据前的清除操作。一种常见的做法是在接收数据前先清空接收缓冲区,以确保只接收到本次回复的数据。

以下是一个示例代码,展示了如何在 C# TCP 客户端中清除上一次返回的数据:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class TCPSocketClient
{
    static void Main(string[] args)
    {
        try
        {
            //创建TCP客户端套接字
            TcpClient clientSocket = new TcpClient();
            
            //连接服务器
            clientSocket.Connect(IPAddress.Parse('127.0.0.1'), 8888);
            
            //发送请求数据
            string request = 'Hello, server!';
            byte[] requestData = Encoding.ASCII.GetBytes(request);
            NetworkStream networkStream = clientSocket.GetStream();
            networkStream.Write(requestData, 0, requestData.Length);
            
            //清空接收缓冲区
            byte[] receiveData = new byte[clientSocket.ReceiveBufferSize];
            networkStream.Read(receiveData, 0, receiveData.Length);
            string responseData = Encoding.ASCII.GetString(receiveData);
            responseData = responseData.TrimEnd('�'); //去除字符串末尾的空字符
            Console.WriteLine('Server response: ' + responseData);
            
            //关闭套接字
            networkStream.Close();
            clientSocket.Close();
        }
        catch (Exception ex)
        {
            Console.WriteLine('Error: ' + ex.ToString());
        }
    }
}

在上面的代码中,我们在接收数据前先创建一个与接收缓冲区大小相同的字节数组 receiveData,并将其作为参数传递给 networkStream.Read() 方法。这样可以确保接收缓冲区被清空,并且只接收到本次回复的数据。

C# TCP 客户端清除上一次返回的数据: 确保接收最新回复

原文地址: https://www.cveoy.top/t/topic/opgf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录