我正在玩弄一個使用C#的TCP客戶端/服務器應用程序,我很困惑這兩種風格之間在通過網絡發送消息時使用哪種更好。在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();
}
這兩個的是更有效的另一種樣式條款內存,速度和性能如果通過網絡發送的消息最多隻有兆字節大?
第一種方法更好,因爲您知道編碼。 Ascii編碼將刪除不可打印的字符。 – jdweng
[哪個更快?](https://ericlippert.com/2012/12/17/performance-rant/) –