BlitsMe.TransportEmulator.EndpointForm.RunDataSend C# (CSharp) Method

RunDataSend() private method

private RunDataSend ( ) : void
return void
        private void RunDataSend()
        {
            byte[] buffer;
            int buffSize = Convert.ToInt32(dataSize.Text) * 1024;
            byte[] data = new byte[buffSize];
            int maxPacketSize = Convert.ToInt16(packetSizeMax.Text);
            int minPacketSize = Convert.ToInt16(packetSizeMin.Text);
            Logger.Info("Sending " + buffSize + " bytes in packets between sizes " + minPacketSize + " and " + maxPacketSize + " to destination");
            DefaultTcpTransportConnection transportConnection =
                new DefaultTcpTransportConnection(_transportManager.TCPTransport.OpenConnection("fubar", 2), ListeningReader);
            int sent = 0;
            int count = 0;
            try
            {
                int sendSize;
                while (sent < buffSize)
                {
                    if (buffSize - sent < minPacketSize)
                    {
                        sendSize = buffSize - sent;
                    }
                    else
                    {
                        sendSize = rand.Next(minPacketSize,
                                             ((buffSize - sent) > maxPacketSize ? maxPacketSize : buffSize - sent) + 1);
                    }
                    buffer = new byte[sendSize];
                    rand.NextBytes(buffer);
                    int startSend = Environment.TickCount;
                    Logger.Info("Sending packet [" + count + "] of " + sendSize + "b");
                    transportConnection.SendDataToTransportSocket(buffer,buffer.Length);
                    sent += sendSize;
                    Logger.Info("Sent packet [" + count + "] of " + sendSize + "b, took " + (Environment.TickCount - startSend) + "ms, " + (buffSize - sent) + "b left.");
                    Array.Copy(buffer, 0, data, sent - sendSize, sendSize);
                    count++;

                    int markerCount = sent / marker;
                    int length = markerCount * marker;
                    Invoke(
                        new Action(
                            () =>
                            {
                                md5total.Text = markerCount.ToString() + "M";
                                md5sum.Text = Util.getSingleton().getMD5Hash(data, 0, length);
                                outBytes.Text = sent.ToString();
                                PacketsOut.Text = count.ToString();
                                outKbps.Text = (sent / (Environment.TickCount - startTime) * 1000 / 1024).ToString();
                            }));
                }
                Logger.Debug("Completed send : " + sent);
                Invoke(new Action(() =>
                    {
                        md5sum.Text = Util.getSingleton().getMD5Hash(data, 0, data.Length);
                        md5total.Text = "All";
                    }));
            }
            catch (Exception e)
            {
                Logger.Error("Exception sending data : " + e.Message, e);
            }
            finally
            {
                transportConnection.Close();
            }
        }