2011-10-08 21 views
0

是否可以同时读取多个(2个TCP端口)?如何同时读取多个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秒。

+2

不要在不同的线程 – zellio

+0

@Mimisbrunnr你能举个例子,以使其更容易理解完全一样的东西?谢谢! – Racooon

回答

2

您可以根据需要读取尽可能多的端口,但需要使用异步读取。您目前正在使用同步(或“阻止”)调用,这意味着您的代码将停止并等待数据到达一个端口,并且在读取时无法执行其他任何操作。

异步读取另一方面意味着当您调用Read方法时,它将启动读取操作并立即返回执行您的代码。您的代码将继续运行,并且在将来某个时间点(有些数据可用时),您提供的代表将被回叫。然后结束读取操作以接收数据。

然后,您可以根据需要触发尽可能多的读取操作,然后执行其他任何您想要执行的操作(或坐在繁忙的等待循环中),直到结果返回。您只需注意数据来自于您,因此您可以跟踪进入应用程序的不同消息流。

阅读异步流操作,如NetworkStream.BeginRead

通过搜索'C#TCPClient BeginRead'和类似查询(例如,

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

NetworkStream BeginRead/EndRead

+0

谢谢,那帮了我很多! – Racooon