gpt4 book ai didi

c# - 等待 TcpClient 数据可用的最佳方式?

转载 作者:可可西里 更新时间:2023-11-01 08:34:58 24 4
gpt4 key购买 nike

while (TcpClient.Client.Available == 0)
{
Thread.Sleep(5);
}

有更好的方法吗?

最佳答案

当然!只需在流上调用 Read(...) 即可。这将阻塞直到数据可用。除非您真的必须直接使用TcpClient,否则我通常会尽可能多地在流上进行操作。如果您想使用套接字,只需调用 Receive(byte[]) 它将阻塞直到数据可用(或套接字关闭)。

现在如果不想阻塞,可以使用Stream.BeginReadSocket.BeginReceive 异步工作。 (或从 .NET 4.5 开始的 ReadAsync。)

我个人发现 Available 几乎没有用(在流和套接字上)并且循环 sleep 绝对是低效的 - 你不希望在数据时必须上下文切换线程还没有进来,您不希望在数据进来时等待 sleep 结束。

关于c# - 等待 TcpClient 数据可用的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1159264/

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