我使用Socket
類將字節數組中的圖像數據發送到在同一臺PC上運行的第三方程序(所以我不必擔心連接問題)。由於我的應用非常簡單,因此我只使用同步send(bytes)
函數,僅此而已。問題是,它運行速度很慢。如果我發送一張20kB的小圖片,它需要接近15ms,但是如果圖片足夠大--1.5mB,則需要接近800ms,這對我來說是不可接受的。我該如何提高插座性能?C#Socket.send非常慢
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