代码之家  ›  专栏  ›  技术社区  ›  Nayruden

如何在C_中监听标准输入和同一线程上的套接字?

  •  1
  • Nayruden  · 技术社区  · 15 年前

    我正在尝试创建一个基于控制台的网络化应用程序,但是它需要能够同时从一个套接字监听标准输入和输入。在C++中,我将使用POSIX选择()函数来实现这一点,但是在C语言中, the equivalent select function 仅用于插座。有没有一种方法可以在不使用多个线程的情况下监听C中的两个输入?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Daniel Earwicker    15 年前

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

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

    要获取标准输入的原始流,请使用 Console.OpenStandardInput .