在一个非套接字上尝试了一个操作

mizuho_2006 2012-05-14 04:58:01
程序偶尔会报这个错,然后与Socket服务器的连接就断开了,必须重新启动程序才能恢复正常。但是一般都是正常的,很少见这个错误。
请问是什么原因造成的呢?
...全文
1428 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mizuho_2006 2012-05-17
  • 打赏
  • 举报
回复
谢谢。我在Send之前又加了一个判断,看Socket状态是否连接,如果连接状态为断开就再连一次,看看还会不会报错。
只在此山中 2012-05-17
  • 打赏
  • 举报
回复
bolConnect 这个状态标志估计没有及时更新,比如你把网线突然拨了,看这个标志是否正确更新.
mizuho_2006 2012-05-16
  • 打赏
  • 举报
回复
但是strSendString不为空,格式也正确。不知道为什么Send就出错了,然后Socket连接就断开了。也没有端口占用之类的情况呀。
mizuho_2006 2012-05-16
  • 打赏
  • 举报
回复
我今天找到了出错的地方,在下面SocketClient.Send方法报错的,然后就转向下面的catch异常处理了。


if (bolConnect) //在与SocketServer连接状态正常的情况下才允许发送信息
{
try
{

byte[] sendbytes = System.Text.Encoding.UTF8.GetBytes(strSendString);
SocketClient.Send(sendbytes, sendbytes.Length, SocketFlags.None);
bolSendFlag = true;

}
catch (ArgumentNullException expt)
{
bolSendFlag = false;
MessageBox.Show("Socket发送数据发生异常:" + expt.Message);
SaveLog.SaveErrLog(expt.Message);
}
catch (SocketException expt)
{
bolSendFlag = false;
MessageBox.Show("Socket发送数据发生异常:" + expt.Message);
SaveLog.SaveErrLog(expt.Message);
}
}
只在此山中 2012-05-16
  • 打赏
  • 举报
回复
仔细检查你的代码,加日志,看socket断开是代码的原因? 还是服务器的原因(或网络设备)?
mizuho_2006 2012-05-15
  • 打赏
  • 举报
回复
再顶一下,今天晚上报了好几次。。不知为什么。。2L的那句我已经注释了,还是会报错。
mizuho_2006 2012-05-15
  • 打赏
  • 举报
回复
自己顶一下
mizuho_2006 2012-05-14
  • 打赏
  • 举报
回复
前天在程序里加了一句
SocketClient.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

是不是跟这个有关系。之前没有报过这个错的。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧