2014-04-12 73 views
-1

我写了一个控制台应用程序。我使用套接字编程。 我在下面的鳕鱼得到错误。数据传输速度为10ms。经过一段时间后,我得到“while((i = stream.Read(bytes,0,bytes.Length))!= 0)”行的错误。在套接字编程中读取数据的错误

while (true) 
{ 
    TcpClient tcpClient = tcpListener.AcceptTcpClient(); 
    NetworkStream stream = tcpClient.GetStream(); 

    String data = null; 
    int i; 
    while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) 
    { 
     // Translate data bytes to a ASCII string. 
     data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); 
     Console.WriteLine("Received: {0}", data); 
     ... 
    } 

错误:

“System.IO.IOException”发生在 System.dll中的附加信息类型的未处理的异常:无法从 传输连接中读取数据:连接尝试失败因为 连接方在一段时间后没有正确响应,或者 建立连接失败,因为连接的主机未能对 作出响应。

+0

当服务器响应您的事件或类似事件时,您是否需要等待?我认为,你的问题是你正在尝试阅读一个空的流。 –

+0

我每10毫秒从clinet获取数据。我可以使用什么事件? – user3374618

回答

0

当你做IO的东西或网络的东西,你的代码需要能够处理excpetional情况,所以用套接字说,服务器突然关闭了他们的连接的结束,你的代码需要能够处理那个。而且你的代码没有做任何事情。

要做到这一点,你需要把你的代码在一个try/catch块

try 
{ 
    // put socket code stuff here 
} 
catch(IOException ioe) 
{ 
    // put excpetion code here. 
} 

希望这有助于。