C# 套接字发送方法。。。用一种方法发送大量数据可以吗?

C# 套接字发送方法。。。用一种方法发送大量数据可以吗?,c#,performance,networking,data-loss,C#,Performance,Networking,Data Loss,我只是想知道这样做是否会导致数据丢失或带宽变慢等问题。我可能正在发送256KB的数据,我想知道我是否应该将其拆分为较小的数据块并单独发送,或者是否可以一次发送所有数据。通常,在应用程序级别,您不应该担心这一点。低级软件和网络硬件将比您更好地根据网络设置、链路速度、协议帧/数据包大小等将数据分割成适当大小的数据块 如果有什么不同的话,尝试将数据分割成更小的数据块,并将其弄错,将迫使网络层生成更多更小的数据块,并用额外的头和开销浪费带宽 如果你的应用程序对性能非常敏感,你可以做一些事情来缓解它,但这

我只是想知道这样做是否会导致数据丢失或带宽变慢等问题。我可能正在发送256KB的数据,我想知道我是否应该将其拆分为较小的数据块并单独发送,或者是否可以一次发送所有数据。

通常,在应用程序级别,您不应该担心这一点。低级软件和网络硬件将比您更好地根据网络设置、链路速度、协议帧/数据包大小等将数据分割成适当大小的数据块

如果有什么不同的话,尝试将数据分割成更小的数据块,并将其弄错,将迫使网络层生成更多更小的数据块,并用额外的头和开销浪费带宽


如果你的应用程序对性能非常敏感,你可以做一些事情来缓解它,但这些都是过早的优化——如果你真的遇到了这些问题,就要处理它们。

一般来说,在应用程序级别,你不应该担心这一点。低级软件和网络硬件将比您更好地根据网络设置、链路速度、协议帧/数据包大小等将数据分割成适当大小的数据块

如果有什么不同的话,尝试将数据分割成更小的数据块,并将其弄错,将迫使网络层生成更多更小的数据块,并用额外的头和开销浪费带宽


如果您的应用程序对性能非常敏感,那么您可以采取一些措施来缓解这些问题,但这些措施都是非常不成熟的优化--在实际存在这些问题时处理这些问题。

例如,发送2GB文件怎么样。你还不会对数据进行分块吗?@ByteBlast除非你能将整个文件保存在内存中,这是毫无意义的,你必须对它进行分块,但你应该尽可能使用大的分块,我的意思是64-128k。@EJP知道任何关于分块和发送文件的好代码示例吗?@ByteBlast任何开源FTP或HTTP客户端都有分块发送大型文件的示例。但正如EJP所说,这些数据块通常很大,它们是出于“更高级别”的原因(重启/恢复、进度跟踪、内存限制、并行传输)和网络性能原因而进行的。如果是windows,则可以使用传输文件,但对于2Gb以上的文件,请参见备注。不需要自组块。例如,发送2GB文件怎么样。你还不会对数据进行分块吗?@ByteBlast除非你能将整个文件保存在内存中,这是毫无意义的,你必须对它进行分块,但你应该尽可能使用大的分块,我的意思是64-128k。@EJP知道任何关于分块和发送文件的好代码示例吗?@ByteBlast任何开源FTP或HTTP客户端都有分块发送大型文件的示例。但正如EJP所说,这些数据块通常很大,它们是出于“更高级别”的原因(重启/恢复、进度跟踪、内存限制、并行传输)和网络性能原因而进行的。如果是windows,则可以使用传输文件,但对于2Gb以上的文件,请参见备注。消除了自组块的需要。