首页 文章

哪种在TCP中发送消息的方法更受欢迎? [关闭]

提问于
浏览
-3

我正在玩使用C#编写TCP客户端/服务器应用程序,我很困惑这两种风格在通过网络发送消息时更好用 .

我遇到的第一个样式是将消息转换为字节数组,并使用 NetworkStream.Write(*) 方法将其写入TcpClient实例的NetworkStream .

void StyleOne(string msg)
{
            TcpClient client = new TcpClient();
            client.Connect(ip, port);
            NetworkStream nwStream = client.GetStream();
            byte[] bytesToSend = ASCIIEncoding.ASCII.GetBytes(msg);

            nwStream.Write(bytesToSend, 0, bytesToSend.Length);
            nwStream.Flush();
            client.Close();
}

我遇到的另一种风格是将TcpClient实例的NetworkStream传递给StreamWriter,然后使用 StreamWriter.Write() 方法将消息写入流

void StyleTwo(string msg)
{
            TcpClient client = New TcpClient(ip, port);
            StreamWriter writer = New StreamWriter(client.GetStream());
            writer.Write(msg);
            writer.Flush();
            client.Close();
}

如果通过网络发送的消息最多只有一兆字节,那么这两个中的哪一个在 Memory, Speed, and Performance 方面更有效?

1 回答

  • 0

    StreamWriter 实例始终使用相同的编码(您可以在其构造函数中指定),并且有一些便捷方法可以将不同类型的数据写入流 .

    在您的第一个示例中,您或多或少地完成了 StreamWriter 在幕后的工作:应用编码并将数据写入基础流 .

    如果必须发送多位数据(使用相同的编码),使用 StreamWriter 将导致更清晰的代码 . 对于一个单一的 string 我不认为你采取哪种方法真的很重要 .

相关问题