为什么我的程序刚刚停止,不会抛出异常?

问题描述:

我有以下代码。发生错误并且代码简单地在_clientStreamWriter.Flush();处的SendData方法中断。为什么我的程序刚刚停止,不会抛出异常?

没有错误,没有抛出异常...程序停止。任何帮助?谢谢!

public class clsTCPClient 
{ 
    TcpClient TCPClient = new TcpClient(); 
    StreamWriter _clientStreamWriter; 

    public bool Connect(string Dest, int Port) 
    { 
     try 
     { 
      if (!TCPClient.Connected) 
      { 
       TCPClient.Connect(Dest, Port); 
       _clientStreamWriter = new StreamWriter(TCPClient.GetStream()); 
      } 
     } 
     catch(Exception e) 
     { 
      utilities.WriteLog(utilities.LogDir + "\\AEOS.log", e.ToString()); 
      return false; 
     } 
     return true; 
    } 

    public void SendData(string Data) 
    {  
     try 
     { 
      //send message to server 
      _clientStreamWriter.WriteLine(Data); 
      _clientStreamWriter.Flush(); 

     } 
     catch(Exception e) 
     { 
      utilities.WriteLog(utilities.LogDir + "\\AEOS.log", e.ToString()); 
     } 
    }  
} 
+0

如果没有错误发生,您如何知道发生错误?主逻辑是什么样的?你在这里有一堂课,但没有解释它的用法。 =) – 2012-07-26 06:56:23

+0

你在哪里试图发送数据?这是你的代码吗,还是一些在该地址和端口上侦听的外部程序? – 2012-07-26 07:08:06

+0

通过嘲笑的时间是0 ....这就是为什么它只是挂在那里 – user1034912 2012-07-26 07:49:00

TCP是一个可靠的连接。您需要阅读服务器端的所有数据,然后正确地阅读代码以进一步移动。你可能会在超时后得到异常。

编辑:

我只是测试它,实际上同花顺()应该不会阻塞,即使你不接受插座或读取服务器端的任何数据。所以它一定是其他一些问题。

+0

这是有点误导;网络IO通常有几个缓冲区等;它不应该实际上被服务器**消耗**。是的,TCP是*可靠*,但通常在硬件/驱动程序/操作系统层处理,而不是在应用层处理。 – 2012-07-26 07:17:40

+0

谢谢,你解决了我的问题...我不得不添加一个TCPClient.SendTimeout = xxxxx来设置超时和错误被抛出。 – user1034912 2012-07-26 07:48:14

+0

@MarcGravell没错。我编辑了我的答案。 – 2012-07-26 08:12:56