未处理的“System.InvalidOperationException”类型的异常出现在 System.dll 中。

其他信息: 断开套接字连接后,只能通过异步方式再次重新连接,

而且只能连接到不同的 EndPoint。在操作完成前,在将不会退出的线程上必须调用 BeginConnect。

截图如下:

我的主要代码如下:
try
{
//连接端口
tcpClient.Connect(ip, port);

}

catch (System.Net.Sockets.SocketException ex)
{

}
网上百度了一下,碰到的该问题的人还真不少,解决的方法寥寥几个字,我只好自己找错误的原因了... 我解决该问题的思路是:捕获异常信息,看看是什么导致了该问题的发生

捕获代码如下
try
{
//连接端口
tcpClient.Connect(ip, port);

}

catch (System.Net.Sockets.SocketException ex)
{
MessageBox.Show(ex.ToString());

}

捕获截图如下:

分析以上截图 从中可以知道,原来我们的程序已经连接上了目标主机的21端口,

在下一轮扫描,即扫下一个端口22时,因一个TcpClient只能连接一个端口,

而我们的TcpClient对象已经连上了目标主机的21端口,所在在扫22端口时,

程序自动将我们的TcpClient对象给关闭了,却没有再new一个TcpClient对象赋给我们之前用的TcpClient对象,

所在我们再次用之前的TcpClient对象连接目标主机的22端口时,

因Tcplient已经关闭,从而导致了以下异常的发生:

分析完后,我们看看解决方法:
知道了原因后,问题就容易解决了,在我们的TcpClient对象连接上目标主机的端口后,

我们主动将我们的TcpClient对象关闭掉,然后再new一个TcpClient对象给我们之前关闭的TcpClietn对象,

呵呵,这叫做置之死地而后生...
修改后的代码如下:

try
{
//连接端口
tcpClient.Connect(ip, port);

//连接成功时,关闭tcpClient,为下一轮扫描做准备
//tcpClient.Close();

//让tcpClient获得重生,可以无异常地进行下一轮扫描了
tcpClient = new System.Net.Sockets.TcpClient();

}
catch (System.Net.Sockets.SocketException ex)
{


}

今天在写一个 C# 端口扫描器,运行程序时, 出现 了以下的错误提示信息: 未处理 的“System. Invalid Operation Exception 类型 异常 出现 在 System. dll 。 其他信息: 断开套接字连接后,只能通过异步方式再次重新连接, 而且只能连接到不同的 EndPoint。在操作完成前,在将不会退出的线程上必须调用 BeginConnect。 截图如下: ...
************** 异常 文本 ************** System. Invalid Operation Exception : 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。    在 System. Data .OleDb.OleDbServicesWrapper.
最近需要使用 C# 连接Oracle进行数据存储,第一次使用 C# 连接Oracle,网上找了一个ORM,使用的是Dos.ROM,配置起来还算方便,但因为没用过,写配置信息不是很会写,网上搜了一下connectionString的写法,勉强写上了。     写完以后使用测试程序运行, 出现 了问题: System. Data .OracleClient 需要 Oracle 客户端软件 8.1.7 或...
异常 类型 及版本,抛出IndexOutOfRange Exception 类型 异常 ,抛出 Invalid Operation Exception 类型 异常 ,抛出 Invalid Operation Exception 类型 异常 ,抛出 Invalid Operation Exception 类型 异 常, C# 源代码
“System. Invalid Operation Exception 类型 未经 处理 异常 在 System.Windows.Forms. dll 发生 其他信息: 线程间操作无效: 从不是创建控件“txtPortName02”的线程访问它。 解决 方法: 1 构造方法 添加  CheckForIllegalCrossThreadCalls = false; 2 方法二 invoke
今天遇到了一个程序停止的问题: 应用程序: BussinessService.exe Framework 版本: v4.0.30319 说明: 由于 未经 处理 异常 ,进程终止。 异常 信息: System. Invalid Operation Exception 在...... 意外的报错,程序本身没有日志记录下来,这时候可以到“计算机管理”——“windows日志”——根据时间及来源定位你的...
opencv_core.dir/objects.a(vs_version.rc.obj)‘ is incompatible with i386:x86-64 output TheDL_: 打开cmakeGUI界面,点击add entry按钮添加OPENCV_VS_VERSIONINFO_SKIP这个选项,默认bool类型,勾选之后重新configuration和genarator就可以了 opencv_core.dir/objects.a(vs_version.rc.obj)‘ is incompatible with i386:x86-64 output TheDL_: 打开cmakeGUI界面,点击add entry按钮添加OPENCV_VS_VERSIONINFO_SKIP这个选项,默认bool类型,勾选之后重新configuration和genarator就可以了 VC无法打开包括文件:“afxcontrolbars.h”: No such file or directory Fly_cg: 原因是什么呢 spacedesk过期问题 leonzheng: 请问怎么操作的?多谢! 在汇编中引用C语言中的结构体 qq_18557657: 真是个天才!