请问在Socket通行中:在一个非套接字上尝试了一个操作

IMAGSE 2010-05-08 07:15:00
我在一个Socket通信的程序中

会发现有时候会报这个错误:“在一个非套接字上尝试了一个操作

请问是什么原因呢?
        ipe = new IPEndPoint(IPAddress.Parse(System.Configuration.ConfigurationSettings.AppSettings["ip"]), int.Parse(System.Configuration.ConfigurationSettings.AppSettings["port"]));
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
System.Web.HttpContext.Current.Session["logincode"] = null;
socket.ReceiveTimeout = 60000;
socket.Connect(ipe);

或者说在一个非套接字上尝试了一个操作这种异常会在什么地方出现呢?

谢谢!
...全文
1131 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lester19872007 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 imagse 的回复:]
引用 2 楼 ly302 的回复:

google上的解决方案

原因:

如果 WinSocks 库或 TCP/IP 堆栈损坏,则可能会发生此问题。

解决方案:

需要重装TCP/IP协议


1、开始——运行——regedit.exe,打开注册表编辑器,删除以下两个键(请先备份这两个键值再删除):
HKEY_LOCAL_MACHINE\System\Current……
[/Quote]
楼主单步调试一下。。看看你的循环在第几次循环时出错,出错的参数循环次数 发出来!
tashiwoweiyi 2010-05-09
  • 打赏
  • 举报
回复
开心,快乐
悔说话的哑巴 2010-05-09
  • 打赏
  • 举报
回复
借鉴一下:

1、开始——运行——regedit.exe,打开注册表编辑器,删除以下两个键(请先备份这两个键值再删除):
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2

2、用记事本打开c:\windows\inf\nettcpip.inf文件,找到:
[MS_TCPIP.PrimaryInstall]
Characteristics = 0xa0 <------把此处的0Xa0改为0x80 保存退出

3、打开本地连接的TCP/IP属性---添加协议——从磁盘安装——浏览找到刚刚保存的nettcpip.inf(%winroot%\inf\nettcpip.inf)文件,然后选择“TCP/IP协议”(不是选择那个TCP/IP 版本6)。
经过这一步之后,又返回网络连接的窗口,但这个时候,那个“卸载”按钮已经是可用的了。点这个“卸载”按钮来把TCP/IP协议删除,然后重启一次机器。

4、重启后再照着第3步,重新安装一次TCP/IP协议便可。

5、再重启一次,这时应该可以了,可以照着需要,设置一下IP地址 。
皇城龙三 2010-05-09
  • 打赏
  • 举报
回复
google上的解决方案

原因:

如果 WinSocks 库或 TCP/IP 堆栈损坏,则可能会发生此问题。

解决方案:

需要重装TCP/IP协议


1、开始——运行——regedit.exe,打开注册表编辑器,删除以下两个键(请先备份这两个键值再删除):
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2

2、用记事本打开c:\windows\inf\nettcpip.inf文件,找到:
[MS_TCPIP.PrimaryInstall]
Characteristics = 0xa0 <------把此处的0Xa0改为0x80 保存退出

3、打开本地连接的TCP/IP属性---添加协议——从磁盘安装——浏览找到刚刚保存的nettcpip.inf(%winroot%\inf\nettcpip.inf)文件,然后选择“TCP/IP协议”(不是选择那个TCP/IP 版本6)。
经过这一步之后,又返回网络连接的窗口,但这个时候,那个“卸载”按钮已经是可用的了。点这个“卸载”按钮来把TCP/IP协议删除,然后重启一次机器。

4、重启后再照着第3步,重新安装一次TCP/IP协议便可。

5、再重启一次,这时应该可以了,可以照着需要,设置一下IP地址 。




IMAGSE 2010-05-09
  • 打赏
  • 举报
回复
顶下!
IMAGSE 2010-05-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ly302 的回复:]

google上的解决方案

原因:

如果 WinSocks 库或 TCP/IP 堆栈损坏,则可能会发生此问题。

解决方案:

需要重装TCP/IP协议


1、开始——运行——regedit.exe,打开注册表编辑器,删除以下两个键(请先备份这两个键值再删除):
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servi……
[/Quote]

应该不是坏了吧。我执行了一个循环,循环次数一百次,但是其中总是有一次到两次会出现那种问题。

并不是所有的都不能执行~

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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