Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the maximum data/speed transfer between 2 applications on the same computer

I have a client/server application written in delphiXe2 using Indy TIdTCPServer and TIdTCPClient that communicates with each other on the same computer using TCP address 127.0.0.1

When i use about 1 megs per second(8 Megabit) of data everything works fine.

However when set my data at higher speed like 20megs/sec (160 Megabit), it slow down and start to behave weirdly.

Is that an usual behavior for that speed? Also i can't seem to find any benchmark or information of what is the maximum data transfer speed between 2 local application.

Regards

like image 413
Chadak Avatar asked Feb 09 '12 21:02

Chadak


People also ask

What is the maximum data transfer speed?

On Ethernet local area networks, data transfer can be as fast as 10 megabits per second. Network switches are planned that will transfer data in the terabit range. In earlier telecommunication systems, data transfer was sometimes measured in characters or blocks (of a certain size) per second.

How do you calculate maximum data transfer rate?

For example, if a transmission system like the telephone network has 3000 Hz of bandwidth, then the maximum data rate = 2 × 3000 log2 2 = 6000 bits/sec (bps). where S is the signal power and N is the noise power.

What is a good data transfer rate?

Typically, there are 8 bits in one Byte. For example, if we have a dial-up Internet connection with a typical modem of 56 kb/s, the maximum transfer rate will be around 6 to 7 kB/s, as the best, and around 3 kB/s as the worst case scenario.

What is data transmission rate in computer?

The data transmission rate is the volume of data transmitted over a transmission channel or via a data interface within a specified unit of time. The units used for this are baud or bits/s.


1 Answers

Perform a bandwidth test. This is what I use (I have attached the relevant server and client code). FWIW, I get around 500Mbps maximum, although there is no way I could process data that fast.

procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  lData: TByteDynArray;
  lCaption: string;
  lMbps: Real;
  lLen: Integer;
begin
  AContext.Connection.IoHandler.CheckForDataOnSource;
  SetLength(lData, 0);
  AContext.Connection.IoHandler.InputBuffer.ExtractToBytes(TIdBytes(lData),
                                     AContext.Connection.IoHandler.InputBuffer.Size);
  lLen := Length(lData);
  if lLen > 0 then begin
    if FStartTime = 0 then begin
      Memo1.Lines.Add(FormatDateTime('dd/mm/yyyy hh:nn:ss.zzz', CsiNow) +': Started test');
      FStartTime := CsiNow;
    end;
    Inc(FBytesReceived, lLen);
    lCaption := 'MBits Received: ' + CsiPadFloat(FBytesReceived * 1.0 / 125000, 3, 1);
    if lCaption <> FLastCaption  then begin
      Label1.Caption := lCaption;
      FLastCaption := lCaption;
    end;
    if FBytesReceived >= 12500000 then begin
      FStopTime := CsiNow;
      lMbps := 100000 / MilliSecondsBetween(FStopTime, FStartTime);
      Memo1.Lines.Add(FormatDateTime('dd/mm/yyyy hh:nn:ss.zzz', CsiNow) +
                      ': Finished test (' + CsiPadFloat(lMbps, 3, 1) + ' Mbps)');
      FBytesReceived := 0;
      FStartTime := 0;
    end
  end;

  CsiSleep(0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  lData: TByteDynArray;
  lIndex: Integer;
begin
  IdTCPClient1.Host := Edit1.Text;
  IdTCPClient1.Connect;
  try
    SetLength(lData, 125000);
    for lIndex := 1 to 125000 do
      lData[lIndex - 1] := Ord('a');
    for lIndex := 1 to 100 do
      IdTCPClient1.IoHandler.Write(TIdBytes(lData));
  finally
    IdTCPClient1.Disconnect;
  end;
end;
like image 170
Misha Avatar answered Sep 18 '22 22:09

Misha