为什么我的程序刚刚停止,不会抛出异常?
我有以下代码。发生错误并且代码简单地在_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是一个可靠的连接。您需要阅读服务器端的所有数据,然后正确地阅读代码以进一步移动。你可能会在超时后得到异常。
编辑:
我只是测试它,实际上同花顺()应该不会阻塞,即使你不接受插座或读取服务器端的任何数据。所以它一定是其他一些问题。
这是有点误导;网络IO通常有几个缓冲区等;它不应该实际上被服务器**消耗**。是的,TCP是*可靠*,但通常在硬件/驱动程序/操作系统层处理,而不是在应用层处理。 – 2012-07-26 07:17:40
谢谢,你解决了我的问题...我不得不添加一个TCPClient.SendTimeout = xxxxx来设置超时和错误被抛出。 – user1034912 2012-07-26 07:48:14
@MarcGravell没错。我编辑了我的答案。 – 2012-07-26 08:12:56
如果没有错误发生,您如何知道发生错误?主逻辑是什么样的?你在这里有一堂课,但没有解释它的用法。 =) – 2012-07-26 06:56:23
你在哪里试图发送数据?这是你的代码吗,还是一些在该地址和端口上侦听的外部程序? – 2012-07-26 07:08:06
通过嘲笑的时间是0 ....这就是为什么它只是挂在那里 – user1034912 2012-07-26 07:49:00