gpt4 book ai didi

.net - .NET 中的套接字性能缓慢 - 有什么提示吗?

转载 作者:可可西里 更新时间:2023-11-01 02:54:20 25 4
gpt4 key购买 nike

我在 .NET 中使用 TCP 套接字时遇到一些性能问题。我的应用程序仅在本地网络中发送文件。如果我在本地主机上运行我的代码,性能会很好(全速 - 在 SSD 上大约 250 MB/秒)。但是当我尝试在我的本地千兆网络中在不同设备之间发送大数据时,速度只有大约 2-4 兆字节/秒。

我尝试优化缓冲区大小(还在两侧设置 Receive- 和 Sendbuffersize),但这并没有太大帮助。这是代码的重要部分:

接收:

'f contains the file path
'client = listener.AcceptTCPClient...
client.ReceiveBufferSize = RECSENDBUFFSIZE
client.SendBufferSize = RECSENDBUFFSIZE
Dim stream As IO.Stream = client.GetStream()

Dim buffer(BLOCKSIZE - 1) As Byte
Dim fstream As New IO.FileStream(f, FileMode.Open)
Dim flen As ULong = fstream.Length
While fstream.Position < fstream.Length
Dim count As Integer = fstream.Read(buffer, 0, BLOCKSIZE)
stream.Write(buffer, 0, count)
End While
fstream.Close()

发送:

'f contains the file path
client.Connect(_address, PORT)
stream = client.GetStream
client.ReceiveBufferSize = RECSENDBUFFSIZE
client.SendBufferSize = RECSENDBUFFSIZE

Dim target As String = IO.Path.Combine(MAINFOLDER, f)
Dim fstream As New IO.FileStream(target, FileMode.Create)
Dim buffer(BLOCKSIZE - 1) As Byte
Dim flen As ULong = filesizes(i)
Do
'I use the min function because there are many files that are transmitted in one connection
Dim count As Integer = stream.Read(buffer, 0, Math.Min(flen, BLOCKSIZE))
If count = 0 Then 'some error handling...
fstream.Write(buffer, 0, count)
flen -= count
If flen = 0 Then Exit Do
Loop
fstream.Close()

令人惊讶的是,通过与不同客户端的并行连接增加了绝对数据吞吐量。我已经在考虑实现多个 TCP 流,但担心同步成本太高以至于不会产生任何影响。

您有任何性能提示吗?谢谢。

最佳答案

你在比较错误的东西。您不应该将 localhost 的速度与真实网络访问的速度进行比较。当您对本地主机使用 TCP 时,真正使用的唯一层是 TCP 和 IP。 IP 检测到一切都是本地的,并立即返回到 TCP,没有任何流量控制。当涉及到实际的网络层时,必然会在其他网络层之一或驱动程序中进行流量控制。

您真正应该将自己的速度与本地网络的速度进行比较。这有点棘手,但这可能会有所帮助: http://www.makeuseof.com/tag/test-home-network-speed-decipher-results/

网络速度通常以 Mbps 表示,即兆位每秒。在上面的站点上有一个本地网络的对话框,它产生 17 Mbps,如果不考虑 TCP 的开销,您有 2-4 * 8 = 16-32 Mbps。

但是您应该对您的本地网络性能进行测试并与其进行比较,而不是与本地主机进行比较。

关于.net - .NET 中的套接字性能缓慢 - 有什么提示吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30306092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com