性能通过TCP套接字客户端 - 服务器应用程序发送/接收数据

时间:2012-11-28 14:53:03

标签: c# performance sockets tcp client-server

我正在开发一个系统,用于通过TCP使用套接字在客户端和服务器应用程序之间交换数据。

服务器很久以前就在C++中编写(第三部分),而客户端则是我在C#中开发的应用程序。基地已经完成。两个应用程序都正常通信。问题是数据交换(在我看来)太慢了。

我强调在我看来因为我不知道你通过TCP使用套接字实际可以期待什么。目前,经过多次测试后,通过接收和发送,通信速度平均为每秒200/250 KB。

有些应用程序允许您评估特定端口上两个端点之间的数据交换速度吗? 我应该期待什么速度?

更具体地说,客户端和服务器是为文件共享而开发的。目前,客户端可以一次接收和发送一个文件。该协议会另外做(一次接收/发送多个文件),但出于安全原因我不喜欢(如果您收到多个文件而丢失了连接,则会丢失您收到的所有文件)。< / p>

更改此功能是否会显着影响数据交换的速度?以什么方式?

2 个答案:

答案 0 :(得分:1)

首先,您必须知道主持人为您提供的链接的带宽,以了解您的期望。如果您自己托管,your upload speed may be way slower than the download speed link。您可以登录服务器并运行speed test

我遇到了类似于你的情况(开发了一个服务器和一个客户端来发送二进制数据)到那时(2 - 3年前)我使用this tool版本测量速度数据交换。您可以将它安装在您的服务器上,设置监视器(您想要观看的端口等),配置图表并让它运行一段时间。它运作得很好。您可以查找搜索“带宽流量监视器”的其他类似工具。

如果您允许应用程序同时交换多个文件,请记住链接速度将在连接之间分配,并且根据使用应用程序的客户端数量,多个连接和文件写入服务器除了带宽之外,它将会受到处理能力的限制。

答案 1 :(得分:0)

  

我应该期待什么速度?

两个节点之间网络中最慢部分的全速传输,减去现有流量在最慢部分上的带宽。在100 Mbit LAN上,我预计单向传输速度为10 MB / s。

  

更改此功能是否会显着影响数据交换的速度?以什么方式?

这完全取决于所使用的协议以及客户端和服务器实现。你必须在艰苦工作的地方进行基准测试,你的瓶颈在哪里。