gpt4 book ai didi

vb.net - 套接字编程 VB.NET - 无限期地读取 block

转载 作者:行者123 更新时间:2023-12-03 12:01:42 24 4
gpt4 key购买 nike

以下是我用于通过 .NET 套接字读取数据的代码。这段代码由一个单独的线程运行。它第一次工作正常,在第二次迭代中它停止在“client.Receive(buffer)”并且永远不会从中恢复。最初我使用递归来读取数据,但将其更改为迭代,认为递归可能是问题的根源。但显然不是。

Private Sub ReceiveSocket(ByVal client As Socket)

Dim bytesRead As Integer = 0

Do
bytesRead = client.Receive(buffer)

sb.Append(Encoding.ASCII.GetString(buffer, 0, bytesRead))

Array.Clear(buffer, 0, buffer.Length)
Loop While bytesRead > 0

End Sub 'ReceiveCallback

为什么卡在 Receive ?

最佳答案

嗯,这很正常。 Receive() 方法在服务器发送其他内容之前不会返回。在您要求它先发送其他内容之前,它可能不会在您的情况下这样做。如果您没有得到完整的服务器响应,您应该只再次调用 Receive()。

检查协议(protocol)规范。服务器通常会发送一些信息,让您知道已收到完整的响应。就像消息中的字节数一样。或消息末尾的特殊字符。换行 (vbLf) 很受欢迎。

关于vb.net - 套接字编程 VB.NET - 无限期地读取 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2279941/

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