热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WSAECONNRESET(10054)错误,紧急求救!

我用CSocket进行通信,客户端Send时出现WSAECONNRESET(10054)错误,请问是什么原因?出现这错误是该断开重连吗?断开重连怎么写?我是先Close-》create->co
我用CSocket进行通信,客户端Send时出现WSAECONNRESET (10054)错误,请问是什么原因?出现这错误是该断开重连吗?断开重连怎么写?我是先Close-》create->connect->send,请问这样为什么不行,到底是服务端出错还是客户端的错误!

16 个解决方案

#1


10054 An existing connection was forcibly closed by the remote host.  
对方已经关闭连接。

#2


Windows Sockets错误码 
 
Windows Sockets错误码扩展描述 
     下面给出WSAGetLastError()函数返回的可能错误码按字母顺序排列的列表,同时给出简要的扩展描述。

WSAEACCES                          (10013)             Permission denied. 

试图使用被禁止的访问权限去访问套接字。例如,在没有使用函数setsockopt()的SO_BROADCAST命令设置广播权限的套接字上使用函数sendto()给一个广播地址发送数据。

 

WSAEADDRINUSE                 (10048)             Address already in use. 

正常情况下每一个套接字地址(协议/IP地址/端口号)只允许使用一次。当应用程序试图使用bind()函数将一个被已存在的或没有完全关闭的或正在关闭的套接字使用了的IP地址/端口号绑扎到一个新套接字上时,该错误发生。对于服务器应用程序来说,如果需要使用bind()函数将多个套接字绑扎到同一个端口上,可以考虑使用setsockopt()函数的SO_REUSEADDR命令。客户应用程序一般不必使用bind()函数——connect()函数总是自动选择没有使用的端口号。当bind()函数操作的是通配地址(包括ADDR_ANY)时,错误WSAEADDRINUSE可能延迟到一个明确的地址被提交时才发生。这可能在后续的函数如connect()、listen()、WSAConnect()或WSAJoinLeaf()调用时发生。

 

WSAEADDRNOTAVAIL         (10049)             Cannot assign requested address. 

被请求的地址在它的环境中是不合法的。通常地在bind()函数试图将一个本地机器不合法的地址绑扎到套接字时产生。它也可能在connect()、sendto()、WSAConnect()、WSAJoinLeaf()或WSASendTo()函数调用时因远程机器的远程地址或端口号非法(如0地址或0端口号)而产生。

 

WSAEAFNOSUPPORT            (10047)             Address family not supported by protocol family. 

使用的地址与被请求的协议不兼容。所有的套接字在创建时都与一个地址族(如IP协议对应的AF_INET)和一个通用的协议类型(如SOCK_STREAM)联系起来。如果在socket()调用中明确地要求一个不正确的协议,或在调用sendto()等函数时使用了对套接字来说是错误的地址族的地址,该错误返回。

 

WSAEALREADY                    (10037)             Operation already in progress. 

当在非阻塞套接字上已经有一个操作正在进行时,又有一个操作试图在其上执行则产生此错误。如:在一个正在进行连接的非阻塞套接字上第二次调用connect()函数;或取消一个已经被取消或已完成的异步请求(WSAAsyncGetXbyY())。

 

WSAECONNABORTED           (10053)             Software caused connection abort. 

一个已建立的连接被你的主机上的软件终止,可能是因为一次数据传输超时或是协议错误。

 

WSAECONNREFUSED            (10061)             Connection refused. 

因为目标主机主动拒绝,连接不能建立。这通常是因为试图连接到一个远程主机上不活动的服务,如没有服务器应用程序处于执行状态。

 

WSAECONNRESET                (10054)             Connection reset by peer. 

存在的连接被远程主机强制关闭。通常原因为:远程主机上对等方应用程序突然停止运行,或远程主机重新启动,或远程主机在远程方套接字上使用了“强制”关闭(参见setsockopt(SO_LINGER))。另外,在一个或多个操作正在进行时,如果连接因“keep-alive”活动检测到一个失败而中断,也可能导致此错误。此时,正在进行的操作以错误码WSAENETRESET失败返回,后续操作将失败返回错误码WSAECONNRESET。

 
看看这最后一个。

#3


http://jl.yesky.com/club/topic/145/275256.html
问题是你服务器端过早关闭了连接。

#4


WSAEDESTADDRREQ           (10039)             Destination address required. 

在套接字上一个操作所必须的地址被遗漏。例如,如果sendto()函数被调用且远程地址为ADDR_ANY时,此错误被返回。

 

WSAEFAULT                          (10014)             Bad address. 

系统检测到调用试图使用的一个指针参数指向的是一个非法指针地址。如果应用程序传递一个非法的指针值,或缓冲区长度太小,此错误发生。例如,参数为结构sockaddr,但参数的长度小于sizeof(struct sockaddr)。

 

WSAEHOSTDOWN                 (10064)             Host is down.

套接字操作因为目的主机关闭而失败返回。套接字操作遇到不活动主机。本地主机上的网络活动没有初始化。这些条件由错误码WSAETIMEDOUT指示似乎更合适。

 

WSAEHOSTUNREACH           (10065)             No route to host. 

试图和一个不可达主机进行套接字操作。参见WSAENETUNREACH。

 

WSAEINPROGRESS               (10036)             Operation now in progress. 

一个阻塞操作正在执行。Windows Sockets只允许一个任务(或线程)在同一时间可以有一个未完成的阻塞操作,如果此时调用了任何函数(不管此函数是否引用了该套接字或任何其它套接字),此函数将以错误码WSAEINPROGRESS返回。

 

WSAEINTR                            (10004)             Interrupted function call. 

阻塞操作被函数WSACancelBlockingCall ()调用所中断。

 

WSAEINVAL                           (10022)             Invalid argument. 

提供了非法参数(例如,在使用setsockopt()函数时指定了非法的level)。在一些实例中,它也可能与套接字的当前状态相关,例如,在套接字没有使用listen()使其处于监听时调用accept()函数。

 

WSAEISCONN                        (10056)             Socket is already connected. 

连接请求发生在已经连接的套接字上。一些实现对于在已连接SOCK_DGRAM套接字上使用sendto()函数的情况也返回此错误(对于SOCK_STREAM套接字,sendto()函数的to参数被忽略),尽管其它一些实现将此操作视为合法事件。

 

WSAEMFILE                          (10024)             Too many open files. 

打开了太多的套接字。不管是对整个系统还是每一进程或线程,Windows Sockets实现都可能有一个最大可用的套接字句柄数。

 

WSAEMSGSIZE                      (10040)             Message too long. 

在数据报套接字上发送的一个消息大于内部消息缓冲区或一些其它网络限制,或者是用来接受数据报的缓冲区小于数据报本身。

 

WSAENETDOWN                    (10050)             Network is down. 

套接字操作遇到一个不活动的网络。此错误可能指示网络系统(例如WinSock DLL运行的协议栈)、网络接口或本地网络本身发生了一个严重的失败。

 

WSAENETRESET                   (10052)             Network dropped connection on reset. 

在操作正在进行时连接因“keep-alive”检测到失败而中断。也可能由setsockopt()函数返回,如果试图使用它在一个已经失败的连接上设置SO_KEEPALIVE。

 

WSAENETUNREACH              (10051)             Network is unreachable. 

试图和一个无法到达的网络进行套接字操作。它常常意味着本地软件不知道到达远程主机的路由。

 

WSAENOBUFS                        (10055)             No buffer space available. 

由于系统缺乏足够的缓冲区空间,或因为队列已满,在套接字上的操作无法执行。

 

WSAENOPROTOOPT             (10042)             Bad protocol option. 

在getsockopt()或setsockopt()调用中,指定了一个未知的、非法的或不支持的选项或层(level)。

 

WSAENOTCONN                    (10057)             Socket is not connected. 

因为套接字没有连接,发送或接收数据的请求不被允许,或者是使用sendto()函数在数据报套接字上发送时没有提供地址。任何其它类型的操作也可以返回此错误,例如,使用setsockopt()函数在一个已重置的连接上设置SO_KEEPALIVE。

 

WSAENOTSOCK                    (10038)             Socket operation on non-socket.

操作试图不是在套接字上进行。它可能是套接字句柄参数没有引用到一个合法套接字,或者是调用select()函数时,一个fd_set中的成员不合法。

 

WSAEOPNOTSUPP                (10045)             Operation not supported. 

对于引用的对象的类型来说,试图进行的操作不支持。通常它发生在套接字不支持此操作的套接字描述符上,例如,试图在数据报套接字上接收连接。

 

WSAEPFNOSUPPORT            (10046)             Protocol family not supported. 

协议簇没有在系统中配置或没有支持它的实现存在。它与WSAEAFNOSUPPORT有些微的不同,但在绝大多数情况下是可互换的,返回这两个错误的所有Windows Sockets函数的说明见WSAEAFNOSUPPORT的描述。

#5


所有错误描述在这里:
http://spaces.msn.com/members/clock/PersonalSpace.aspx?_c=Links:8eb95944

#6


为什么我的服务器会过早断开连接呢?我没有写断开连接的代码呀,我的服务端是这样写的:
在监听Socket中new一个接收socket来接收数据。代码如下:
void CListenSocket::OnAccept(int nErrorCode) 
{
// TODO: Add your specialized code here and/or call the base class
CServerSocket* pSocket=new CServerSocket;

CSocket::Accept (*pSocket);

CSocket::OnAccept(nErrorCode);

}

请问这个问题怎么解决?

#7


然后呢?你这个CServerSocket* pSocket=new CServerSocket;出来的pSocket记录在哪里?做了什么操作?

#8


pSocket是CServerSocket类的对象呀,CServerSocket类中有OnReceive函数接收数据呀

#9


我是说这个对象你是怎么保存的阿。
CServerSocket* pSocket=new CServerSocket;这么创建以后,就玩玩了?以后要用它,你怎么办的?

#10


对,就是创建完之后就玩完了,以后没用到它哦!

#11


晕死。你得记住它阿。不然,那边客户端发过来的东西,你怎么收阿!得用这个pSocket接收。
这个accept的过程就是说,如果有客户端连接,那么服务器端创建一个pSocket与其对应,每个pSocket将代表一个客户端。

#12


那我该怎么记住它呢?在哪里判断与客户端相对应的pSocket是哪一个呢?

#13


你应该建立一个客户端socket数组,然后将建立的pSocket保存到数组中。
你不用判断是哪个pSocket,当客户端有信息发送来时,相对应的pSocket的OnReceive函数就会自动响应了。
对于这些,一时半会也没有办法说清楚,建议你找本socket方面的书,先读读。

#14


你那有没有例子呀,给我个例子看下。

#15


没人回贴吗?我现在写的程序,在客户端,我把Socket发送消息写在线程里,服务端能收到消息,SEND返回值也是包的大小,但客户端就是收不到,如果把Socket发送消息写在一个按钮下,客户端就可以收得到消息,请大家帮忙,这些什么原因呀?

#16


问题是你服务器端过早关闭了连接。

推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
author-avatar
mobiledu2502911403
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有