socket Error # 10060

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket Error # 10060相关的知识,希望对你有一定的参考价值。

最近在运行个软件时总是弹出这个对话框,还请各位高手多多提供解决方法?

你可能是中了木马,在打开文件夹的时候,就主动去连接远程计算机。
下载个EWIDO,安装后,重起,按F8,进安全模式,杀木马,然后重起,应该就没问题了。
是用EWIDO杀的吗?不要随便找个杀木马的扫下,就算了事。
还有就是你的EWIDO在杀之前,一定要升下级。

开始-运行窗口,输入“regsvr32 actxprxy.dll”回车,接着会出现一个信息对话 框“DllRegisterServer in actxprxy.dll succeeded”,确定。再依次运行以下命令regsvr32 shdocvw.dll
regsvr32 oleaut32.dll
regsvr32 actxprxy.dll
regsvr32 mshtml.dll
regsvr32 msjava.dll
regsvr32 browseui.dll
regsvr32 urlmon.dll
重启。
这些命令是没有坏处的,你可试下。
参考技术A 由于连接方在一段时间后没有正确的答复或连接的主机没有反应,连接尝试失败,
解决idhttp.get 10060 错误,可以将错误上抛
repeat
bError := False;
try
result := IdHTTP.Get(URL);
except
bError := True
end;
util (not bError) or (LRetry > 5);
如果这函式只单独处理这部分。最好是让错误上抛,再调用此函数的表达式那里做 try except 和 disconnect。
参考技术B 这是一个标准的网络错误,表明不能连接到指定的服务。产生的原因可能是IP地址错误,或者是端口错误,仔细检查一下,应该很容易解决。

dart: socket error错误一览

SocketException: OS Error: Broken pipe, errno = 32

这个错误其实有点迷惑性,很多时候调用栈显示是在socket.connect的时机出的错,但实际是因为socket已经被对端关闭,而关闭的原因可能是因为发送了错误的数据。

解决:
发送数据时机检查socket连接状态及数据正确性。

Bad state: StreamSink is bound to a stream

这个错误容易发生在调用socket.flush之后,这是因为flush操作是一个future, 如果在这个操作结束之前就向socket中写入数据就会报这个错误。实际上调用socket.close也有可能遇到这种错误。在io_sink.dart里源码如下:

  Future flush() {
    if (_isBound) {
      throw new StateError("StreamSink is bound to a stream");
    }
    ...
  }

  Future close() {
    if (_isBound) {
      throw new StateError("StreamSink is bound to a stream");
    }
    ...
    return done;
  }

解决:
或者写入时机在flush完成之后,需要外部关心写入时机;或者封装socket并持有一个缓冲数据对象,外部写入时判断当前socket状态,如果flush完成则直接socket.add否则写入到缓冲区,flush完成时再发送缓冲的数据, 外部就不用再关心写入时机了。

后者实现显然更复杂,需要一揽子的状态判断和处理操作, 但是把这个复杂留给外部逻辑会让工程整体更复杂。

StreamSink is closed

这个错误虽然直白但需要明确什么时机哪个stream是关闭的。一种情况是发生在和socket进行关联的stream的关闭操作上,如上socket.close是一个future, future结束之前还能够接收数据,如果我们的关联stream的close是和socket.close一个时机,那么当socket.close的future还没有结束这时又有数据从远端过来,调用关联stream的处理操作就会出这个错误。
形如:

void close() {
  _socket.close();
  your_stream.close();
}

void handleData() {
  _socket.listen((data) {
    your_stream.add(yourData(data)); // your_stream可能已经关闭
  });
}

解决:
关联的stream的操作应当在socket.close的future结束之后再关闭。
形如:

void close() async {
  await _socket.close();
  your_stream.close();
}

以上是关于socket Error # 10060的主要内容,如果未能解决你的问题,请参考以下文章

Socket Error 10060 Connection timed out是啥意思?

笔记本一开机就显示Socket error 10060 - Connection timed out

服务器地址错误或者服务器没启动:Socket Error# 10060 Connection timed out 是什

瑞友天翼提示Socket Error #10060 connection timed out....求高手指点

电脑上Socket Error # 10060 Connection timed out是啥意思?

连接ftp服务器时,提示Socket Error #10060 Connection timed out 怎样解决,是啥情况才会出现。