vb.net - vb.net - 如果没有可读取的内容,StreamReader 将挂起
问题描述
我有这个代码来读取 TCP 流:
Function checkdata() As String
Dim Stream As NetworkStream = client.GetStream()
sr = New StreamReader(Stream)
Dim s As String = sr.ReadLine() <------------
Return s
End Function
问题是如果流上没有新数据,代码就会挂在标记的行上。为什么?我该如何解决这个问题?
解决方案
你可以使用.DataAvailable
a 的属性NetworkStream
吗?
Function checkdata() As String
Dim Stream As NetworkStream = client.GetStream()
If Stream.DataAvailable Then
Dim SR = New StreamReader(Stream)
Dim s As String = SR.ReadLine()
Return s
Else
Return Nothing
End If
End Function
推荐阅读
- python - `readlines()` 会关闭在 python 中打开的文件吗?
- r - 大型数据集最佳实践的内部联接
- javascript - 如何使用javascript在手机上的网页上录制音频和播放音乐?
- javascript - 如何在没有利用者的情况下确定多次点击?
- go - k8s api 服务器前面的 Golang 代理挂在 kubectl delete pod 上并带有“WINDOW_UPDATE”
- javascript - 来自 API 的 React 更新道具
- node.js - 有没有办法使用 React 和 Observables (rx.js) 将文件上传到 Node.js?
- python - 当我在 X/Y/Z 轴上旋转时如何计算四元数
- c++ - std::cout << glGetString(GL_RENDER) << std::endl; 抛出错误,但不是 GL_Renderer 或 GL_Verision,我不知道为什么?
- python - 如何使用 scipy.signal.spectogram 找到正确的幅度