如何同时读取多个TCP(端口)

本文关键字:端口 TCP 何同时 读取 | 更新日期: 2023-09-27 18:10:57

是否可以同时读取多个(2个TCP端口)?

的例子:

    public void getFeed()
    {
        while(true)
        {
            try 
            {
                if (!isReadableStream()) throw new Exception("not readable Stream");
                recieveMsg = streamReader.ReadLine();
                if(!String.IsNullOrEmpty(recieveMsg))
                {
                    displayConsole(recieveMsg, false);
                }
            }
            catch(Exception ex)
            {
                displayError(ex.Message);
            }
        }
    }

上面的函数读取1端口,我想读取另一个端口,因为服务器每1-2秒从另一个服务器获取提要。

如何同时读取多个TCP(端口)

您可以读取任意数量的端口,但是您需要使用异步读取。您当前正在使用同步(或"阻塞")调用,这意味着您的代码停止并等待数据到达一个端口,并且在读取时不能做任何其他事情。

另一方面,异步读取意味着当你调用Read方法时,它开始读取操作并立即返回执行你的代码。您的代码将继续运行,并且在将来的某个时刻(当某些数据可用时),您提供的委托将被回调。然后结束读取操作以接收数据。 然后,您可以根据需要触发尽可能多的读取,然后离开并做任何您想做的事情(或坐在一个繁忙的等待循环中),直到结果返回。您只需要注意数据来自何处,以便跟踪进入应用程序的不同消息流。

了解异步流操作,如NetworkStream.BeginRead.

你可以通过搜索' c# TCPClient BeginRead'和类似的查询轻松找到示例,例如

http://www.albahari.com/nutshell/ch20.aspx

NetworkStream BeginRead/EndRead