我正在使用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();
}
如果通过网络发送的邮件最多只有一兆字节,那么这两个中的哪一个在内存,速度和性能方面效率更高?
答案 0 :(得分:0)
StreamWriter
实例始终使用相同的编码(您可以在其构造函数中指定),并且有一些方便的方法可以将不同类型的数据写入流中。
在您的第一个示例中,您或多或少地完成了StreamWriter
将要做的事情:应用编码并将数据写入基础流。
如果您必须发送多位数据(使用相同的编码),使用StreamWriter
将导致更清晰的代码。对于一个string
,我认为你采用哪种方法并不重要。