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

标签 c# performance sockets tcp client-server

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

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

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

是否有应用程序可以让您评估特定端口上两个端点之间的数据交换速度? 我应该期望什么速度?

更具体地说,客户端和服务器是为文件共享而开发的。目前,客户端一次只能接收和发送一个文件。该协议(protocol)会以其他方式执行(一次接收/发送多个文件),但出于安全原因,我更喜欢其他方式(如果您接收到多个文件并且失去连接,您将丢失所有正在接收的文件)。

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

最佳答案

首先,您必须知道您的主机为您提供的链接的带宽,才能知道会发生什么。如果您自己托管,your upload speed may be way slower than the download speed link .您可以登录到您的服务器并运行 speed test .

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

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

关于c# - 性能 通过 TCP 套接字客户端-服务器应用程序发送/接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13607908/

相关文章:

c - CentOS 和 Windows 之间关于端口号的不同行为

java - 多个客户端线程可以连接,线程按顺序接受

c# - C# 中的快速数组移位实现?

c# - 在 C# 中,如果我的对象支持该接口(interface),我如何检查 T 是否属于 IInterface 类型并强制转换为该类型?

java - 奇怪的表现行为

c# - 如何使此 LINQ 查询更快?

c# - 按下按钮时在 C# 中播放声音

c# - 为什么人们不将依赖属性包装在通用类中?

python - 递归方程的高效python方法

java - SSL套接字帮助-javax.net.ssl.SSLHandshakeException : Received fatal alert: certificate_unknown