私はC#を使ってTCPクライアント/サーバアプリケーションを作って遊んでいます。ネットワーク経由でメッセージを送信する際に、これらの2つのスタイルの間で使う方が良いと混乱します。TCPでメッセージを送信する方法はどれですか?
私が遭遇した最初のスタイルは、メッセージをバイト配列に変換し、NetworkStream.Write(*)
メソッドを使用してTcpClientのインスタンスのNetworkStreamに書き込むことです。で、より効率的であるこれら二つの流れに
StreamWriter.Write()
メソッドを使用している
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();
}
void StyleTwo(string msg)
{
TcpClient client = New TcpClient(ip, port);
StreamWriter writer = New StreamWriter(client.GetStream());
writer.Write(msg);
writer.Flush();
client.Close();
}
ネットワークを介して送信されるメッセージのサイズが最大でも1メガバイトの場合は、メモリ、速度、およびパフォーマンス
エンコードを知っているので、最初の方法が優れています。 Asciiエンコーディングは、印刷できない文字を削除します。 – jdweng
[どちらが速いのですか?](https://ericlippert.com/2012/12/17/performance-rant/) –