c# - 如何在C#中的同一线程上监听standard in和套接字?

标签 c# sockets

我正在尝试制作一个基于网络控制台的应用程序,但是它需要能够同时监听标准输入和来自套接字的输入。在C++中,我将使用posix select()函数执行此操作,但是在C#中,the equivalent select function似乎仅用于套接字。有没有一种方法可以在不使用多个线程的情况下监听C#中的两个输入?

最佳答案

要等待多个输入,您需要为每个输入等待一个WaitHandle,然后调用静态方法WaitHandle.WaitAny

但是另一种选择是使用异步IO。使用BeginXXXX开始读取/接收操作。在每种情况下,您都提供一个回调,该回调将在完成时执行。启动它们之后,您将等待一个监视对象,并在回调中向该监视对象发出脉冲以通知完成。这是一种非常有效的多线程编程形式,但是您不必显式启动任何线程。

要获取原始Stream作为标准输入,请使用Console.OpenStandardInput

关于c# - 如何在C#中的同一线程上监听standard in和套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2209695/

相关文章:

c# - 相同的文本具有不同的字节大小

c# - 如何将任何可以显示文本的对象传递给 C# 方法

Python套接字子进程连接一段时间后没有回复

java - 服务器没有收到客户端的请求

sockets - 使用多个套接字,非阻塞或选择阻塞会更好吗?

c - UNIX 域套接字 (PF_UNIX) 上的 send() 失败并出现 ENOBUFS 错误

c# - 9个字符的唯一随机字符串(用于单表)

c# - 功能管理、功能切换、功能标志不适用于 Azure 应用程序配置存储

c# - 找不到 ParseStringConverter

sockets - Java Socket 和 ServerSocket 问题