非常に遅いです(私は、接続の問題を心配する必要はありません)。私は本当に単純なアプリケーションを持っているので、私は同期のsend(bytes)
関数だけを使用します。問題は、非常に遅いです。小さい20kBの画像を送信すると15ms近くかかりますが、画像が1.5mBほど大きければ、それは800ms近くかかりますが、これは私には受け入れられません。どのようにしてソケットのパフォーマンスを改善できますか?C#Socket.sendが、私は同じPC上で実行されているサードパーティ製のプログラムの開発にバイト配列内の画像データを送信するために<code>Socket</code>クラスを使用してい
Socket sender = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress, 3998);
sender.Connect(remoteEP);
byte[] imgBytes;
MemoryStream ms = new MemoryStream();
Image img = Image.FromFile("С:\img.bmp");
img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
imgBytes = ms.ToArray();
/*Some byte operations there: adding headers, file description and other stuff.
They are really fast and add just 10-30 bytes to array, so I don't post them*/
DateTime baseDate = DateTime.Now; // Countdown start
for (uint i = 0; i < 100; i++) sender.Send(byteMsg);
TimeSpan diff = DateTime.Now - baseDate;
Debug.Print("End: " + diff.TotalMilliseconds);
// 77561 for 1.42mB image, 20209 for 365kb, 1036 for 22kB.
イメージの送信方法を表示できますか? – mxmissile
マイ・ポストを更新しました。 – JustLogin
正しいことをベンチマークしていますか?すなわち、 'sender.Send'だけですか? – Martijn