c# - 如何使用 Tcp NetworkStream C# 发送和接收列表

标签 c# winforms sockets tcp

我刚刚开始学习套接字编程,现在我正在尝试将 List<> 从客户端发送到服务器。

我读到我需要使用 BinaryFormatter 进行序列化和反序列化,但我只是不知道如何使用 NetworkStream 将其发送到服务器。

请帮忙,我们将非常感谢任何解释。非常感谢您。

下面是我的客户端代码

private void btnSendDataToServer_Click(object sender, EventArgs e)
    {
        int noOfMessage = Convert.ToInt32(tbMessageNo.Text);
        try
        {
            serverStream = clientSocket.GetStream();
            for (int i = 0; i < noOfMessage; i++)
            {
                clientList.Add(tbSendDataToServer.Text);
            }

            //send data to server
            byte[] outStream = System.Text.Encoding.ASCII.GetBytes(?); 
            serverStream.Write(outStream, 0, outStream.Length);
            serverStream.Flush();

            //receive data from server
            byte[] inStream = new byte[102400]; 
            serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
            string returndata = System.Text.Encoding.ASCII.GetString(inStream); 
            msg("Data from Server : " + returndata);
        }
        catch(SocketException ex)
        { }
    }

下面是我的服务器代码

byte[] bytesFrom = new byte[102400];

NetworkStream networkStream = clientSocket.GetStream();
                networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
                dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);

                    f.testQS.Enqueue(dataFromClient);
                    AppendText(f.testQS.Count().ToString() + " >> " + "From client-" + ClientNo + "--" + dataFromClient);

                    //send data to client
                    rCount = Convert.ToString(requestCount);
                    serverResponse = "Server to Client(" + ClientNo + ") " + rCount;
                    sendBytes = Encoding.ASCII.GetBytes(serverResponse);
                    networkStream.Write(sendBytes, 0, sendBytes.Length);
                    networkStream.Flush();

P.s.如果它是单个字符串,我这样做没有问题。但我想根据用户 noOfMessage 循环字符串 1st 并将其放入列表中。然后我会将列表发送到服务器。然后,Server会读取收到的List并显示List的数据。谢谢。

最佳答案

发送数据

BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(serverStream, clientList);
serverStream.Close();

在服务器上接收

BinaryFormatter formatter = new BinaryFormatter();
clientList = (List<string>) formatter.Deserialize(networkStream);

关于c# - 如何使用 Tcp NetworkStream C# 发送和接收列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42298064/

相关文章:

c# - 使用 LINQ 拆分集合

c# - c#中的指尖检测

java - 在没有 WiFi 的情况下在 android 中使用套接字

c++ - Swipl 中的套接字

c# - .NET WinForms 应用程序的 MVC/MVP 框架

c - 如何在不读取 TCP 连接的情况下检查 TCP 连接是否被对等方正常关闭?

c# - 用于返回过滤值属性的 XML 表达式

c# - 在运行时重新编译 C#,没有 AppDomains

c# - 在 WPF .NET Framework 中使用自定义任务管理器时,如何防止进程重复?

windows - 是否有免费的 "Add Connection"或 "SQL Connection"对话框?