c# - 仅在 TCPClient 接收到脚本后如何继续执行脚本?
问题描述
我想过向服务器发送一个带有一个字节的数据包,并在服务器端写入以下代码:
int a= stream.ReadByte()
if(a==-1){
//client received data
}
该流是 NetworkStream
我想这样做,因为在此之后我在服务器上启动了一个计时器。只有当客户端更新了它们的值时,计时器才应该启动。
解决方案
AStream
只有有限的选项:
- 它可以返回一个正数来表示“是的,我提供了这么多数据”
- 它可以返回一个非正数来表示“EOF:我没有数据,永远不会有更多数据”
- (上面的映射也与 类似
ReadByte()
,除了第二点因没有数据而变为“负数”)
- (上面的映射也与 类似
- 它可以阻塞,等待上述两个条件之一成为可能
- 它可以抛出异常
它不能做的是说“我目前没有数据,但我将来可能会”。因此,您无法使用Stream
API 来检查是否有数据。相反,通常使用异步 API(通常在其Socket
自身上,或另一个不是的抽象Stream
),以允许您在数据可用时处理回调。a 上还有一个.Available
属性,.Socket
它告诉您当前缓冲并可供使用的数据量(注意:此 API 通常仅用于在同步与异步 IO 之间进行选择)。
推荐阅读
- laravel - 如何在没有登录身份验证的情况下保护移动应用程序的 API
- python - 为 Google pytrends 找到合适的关键字和类别
- powerbi - 使用命令提示符在 PowerBI(或任何其他方法)中识别工作区/数据集/数据流/报告等
- python - 使用 TensorFlow 进行内存高效的滑动窗口序列学习
- python - 通过电报机器人设置聊天权限
- node.js - 将值传递给节点/电子应用程序通知中操作按钮的回调函数?超时后回调函数也不起作用
- python - 尽管 SECRET_KEY 错误,但部署在 Heroku 上的 Django 应用程序仍然有效
- javascript - 如何在数组 js 中从 px 到 vh
- amazon-web-services - 使用 for 改造模板文件并转义最后一个逗号
- python - 计算图像python中的角度