C# 为什么我的程序只是停止,没有抛出异常?
我有以下代码。发生错误,代码在C# 为什么我的程序只是停止,没有抛出异常?,c#,exception,C#,Exception,我有以下代码。发生错误,代码在\u clientStreamWriter.Flush()处中断在SendData方法中 没有给出错误,没有引发异常。。。程序刚刚停止。有什么帮助吗?谢谢 public class clsTCPClient { TcpClient TCPClient = new TcpClient(); StreamWriter _clientStreamWriter; public bool Connect(string Dest, int Port)
\u 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());
}
}
}
TCP是一种可靠的连接。您需要读取服务器端的所有数据,并正确地完成读取,以便代码进一步移动。您可能会在超时后得到异常
编辑:
我刚刚测试了它,实际上Flush()不应该阻塞,即使您不接受套接字或读取服务器端的任何数据。所以这一定是另外一个问题。如果没有给出错误,您如何知道发生了错误?主要的逻辑是什么?这里有一个类,但没有解释它的用法。=)您试图将数据发送到哪里?这也是您的代码,还是某个外部程序正在侦听该地址和端口?默认情况下,超时为0。。。。这就是为什么它只是挂在那里这有点误导;网络IO通常有几个缓冲区等;服务器不需要实际使用它。是的,TCP是可靠的,但这通常是在硬件/驱动程序/操作系统层处理的,而不是在应用程序层。谢谢,你解决了我的问题。。。我必须添加一个TCPClient.SendTimeout=xxxxx来设置超时,然后抛出错误。