Windows下UDP连接被重置错误10054
- 格式:docx
- 大小:19.24 KB
- 文档页数:2
贴2段能稳定重现10053的代码,下面是客户端:[cpp]view plaincopy1.WORD VersionRequested;2.WSADATA WsaData;3.4.VersionRequested = MAKEWORD(2, 2);5.6.if (WSAStartup(VersionRequested, &WsaData))7.return -1;8.9.SOCKET SocketServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);10.SOCKADDR_IN AddrServer;11.AddrServer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");12.AddrServer.sin_port = htons(9999);13.AddrServer.sin_family = AF_INET;14.15.// 连接服务器16.if (0 != connect(SocketServer, (SOCKADDR *)&AddrServer, sizeof(SOCKADDR)))17.{18. closesocket(SocketServer);19.return false;20.}21.22.int err = 0;23.char temp[] = "hello, server";24.int rs = send(SocketServer, temp, sizeof(temp) + 1, 0);25.26.char buff[1024] = {0};27.rs = recv(SocketServer, buff, sizeof(buff), 0);28.29.// 下面这2句代码如果注释掉,后面的recv就能正解的返回0。
如果不注释掉,recv就会返回-1,30.// 并得到10053这个错误31.rs = send(SocketServer, temp, sizeof(temp) + 1, 0);32.err = WSAGetLastError();33.34.rs = recv(SocketServer, buff, sizeof(buff), 0);35.err = WSAGetLastError();36.37.system("pause");38.return 0;这个是服务器的:[cpp]view plaincopy1.WORD VersionRequested;2.WSADATA WsaData;3.4.VersionRequested = MAKEWORD(2, 2);5.6.if (WSAStartup(VersionRequested, &WsaData))7.{8. printf("加载socket库失败!\n");9.return -1;10.}11.12.// 监听来自浏览器的请求13.SOCKET SockServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);14.SOCKADDR_IN AddrClient;15.AddrClient.sin_family = AF_INET;16.AddrClient.sin_addr.s_addr = INADDR_ANY;17.AddrClient.sin_port = htons(9999);18.19.if (SockServer == INVALID_SOCKET)20.{21. printf("socket初始化失败!\n");22. closesocket(SockServer);23. WSACleanup();24.return -1;25.}26.27.if (bind(SockServer, (sockaddr*)&AddrClient, sizeof(AddrClient)) != 0)28.{29. printf("socket绑定失败!\n");30. closesocket(SockServer);31. WSACleanup();32.return -1;33.}34.35.if (listen(SockServer, 10) != 0)36.{37. printf("socket监听失败!\n");38. closesocket(SockServer);39. WSACleanup();40.return -1;41.}42.43.while (1)44.{45. SOCKET NewSocket = accept(SockServer, NULL, NULL);46.if (INVALID_SOCKET == NewSocket)47. {48. closesocket(NewSocket);49.continue;50. }51.else52. {53.struct linger so_linger;54. so_linger.l_onoff = 1;55. so_linger.l_linger = 30;56. setsockopt(NewSocket ,SOL_SOCKET, SO_LINGER, (const char*)&so_linger, sizeof(so_linger));57. }58.59.char buff[1024];60.int rs = recv(NewSocket, buff, sizeof(buff), 0);61.62.char temp[] = "hello, client";63. rs = send(NewSocket, temp, sizeof(temp) + 1, 0);64.65. closesocket(NewSocket);66.}10053里说的software在我的例子中指的就是那个send函数吗,是send函数执行的时候,发现对方的套接字已经关闭了,所以它把己方的套接字也关掉了吗,然后导致后续的recv 报错10053?出现10053的原因是因为在你执行这次send的时候对端已经执行过closesocket了,而发送的数据还是被成功的推入了发送缓冲区中,因此返回了0,此时你可能还没得到FIN消息,而紧接着recv这边就得到了对端关闭socket的FIN消息,因此此时需要放弃发送缓冲中的数据,异常终止连接,所以得到了10053错误:您的主机中的软件中止了一个已建立的连接。
FlashFXP错误代码10054:连接被同位体重置等问题的解决方案由于工作需要,要搭建一个ftp,服务端软件选择了filezilla,客户端默认指定的是flashfxp。
选择了局域网内的一台机器作为ftp服务器,用户分为内网用户和外网用户。
情况如下:ftp服务器所在机器内网ip: 192.168.1.10 外网ip: 202.188.192.5内网用户user1的机器ip: 192.168.1.21(与ftp同属一个内网,其对应的外网Ip是202.188.192.5)外网用户user2的机器ip: 202.188.190.2(注:由于政策和相关法规,文中所有ip地址均不是作者配置的实际ip地址,但是与作者配置的ip地址是等价的)去网上搜索了filezilla的基本教程。
并按照基本流程配置下来。
主要配置如下:1、安装完成filezilla之后,新建用户,并选择对应的ftp目录和权限就可以了,很简单。
另外就是进行系统配置,点击工具栏中的系统配置图标,进入系统配置菜单(FileZilla Server Options)。
首页是最基本的东西,比如端口,最大用户数,超时时间等。
参考配置如下。
2、很多教程都说需要使用被动模式,因此设置Passive mode settings这个版块,勾选其中的Use custom port range,将范围设置为10001到10050。
还说如果外网的用户要连接这个ftp的话,需要在下面的IPv4 specific栏目中勾选Use the following IP,并填上ftp所在机器的外网ip,如果是咱们的例子就是202.188.192.5。
但是请注意!!!在之后的实践中,我发现可以不用这么做,这个栏目只勾选Default就可以。
如下图:以往的教程设置Use the following IP的目的是为了让外网的机器能够通过IP地址找到这台ftp服务器的机器。
我们可以这样设置,但是也可以进行另外一项更加保险的设置,将会在下文提出。
利用 netsh,winsock,reset,命令修复网络应用错误 篇一:重置 winsock netsh winsock reset winsock 是 Windows 网络编程接口,winsock 工作在应用层,它提供与底层传输协议无关 的高层数据传输编程接口 netsh winsock reset 是把它恢复到默认状态 中文名 重置 Winsock 目录 外文名 ResettingWinsockCatalogue 目录 1 简介 2 重置 Winsock 3 为 Windows Vista 重置 Winsock 4 为 Windows 7 用户重置 Winsock 5WINSOCK 各种修复方法 1 简介 netsh winsock reset 命令,作用是重置 Winsock 目录。
如果一台机器上的 Winsock 协议 配置有问题的话将会导致网络连接等问题,就需要用 netsh winsock reset 命令来重置 Winsock 目录借以恢复网络。
这个命令可以重新初始化网络环境,以解决由于软件冲突、病毒原因造成 的参数错误问题。
netsh 是一个能够通过命令行操作几乎所有网络相关设置的接口,比如设置 IP,DNS,网卡,无线网络等,Winsock 是系统内部目录,Winsock 是 Windows 网络编程接口, winsock 工作在应用层,它提供与底层传输协议无关的高层数据传输编程接口, reset 是对 Winsock 的重置操作。
当执行完 winsock 的命令重启计算机后,需要重新配置 IP。
2 重置 Winsock 要为 Windows XP 重置 Winsock,请按照下列步骤操作: 1.单击“开始”,运行中输入 cmd。
2.然后输入命令 netsh winsock reset。
3.重启计算机。
3 为 Windows Vista 重置 Winsock 要为 Windows Vista 重置 Winsock,请按照下列步骤操作: 1.单击“开始”,在开始搜索框中键入 cmd,右键单击“,单击“以管理员身份运行”,然后按 “继续”。
这段时间由于工作需要,要搭建一个ftp,服务端软件选择了filezilla,客户端默认指定的是flashfxp。
选择了局域网内的一台机器作为ftp服务器,用户分为内网用户和外网用户。
情况如下:ftp服务器所在机器内网ip: 192.168.1.10 外网ip: 202.188.192.5内网用户user1的机器ip: 192.168.1.21(与ftp同属一个内网,其对应的外网Ip是202.188.192.5)外网用户user2的机器ip: 202.188.190.2(注:由于政策和相关法规,文中所有ip地址均不是作者配置的实际ip地址,但是与作者配置的ip地址是等价的)去网上搜索了filezilla的基本教程。
并按照基本流程配置下来。
主要配置如下:1、安装完成filezilla之后,新建用户,并选择对应的ftp目录和权限就可以了,很简单。
另外就是进行系统配置,点击工具栏中的系统配置图标,进入系统配置菜单(FileZilla Server Options)。
首页是最基本的东西,比如端口,最大用户数,超时时间等。
参考配置如下。
2、很多教程都说需要使用被动模式,因此设置Passive mode settings这个版块,勾选其中的Use custom port range,将范围设置为10001到10050。
还说如果外网的用户要连接这个ftp的话,需要在下面的IPv4 specific栏目中勾选Use the following IP,并填上ftp所在机器的外网ip,如果是咱们的例子就是202.188.192.5。
但是请注意!!!在之后的实践中,我发现可以不用这么做,这个栏目只勾选Default就可以。
如下图:以往的教程设置Use the following IP的目的是为了让外网的机器能够通过IP地址找到这台ftp服务器的机器。
我们可以这样设置,但是也可以进行另外一项更加保险的设置,将会在下文提出。
235.
Socket error = #10054的解决方法
cuteftp最近一段时间传东西上去的时候老出现Socket 错误 = #10054.我查阅了一些资料,发现出现同一个问题的不少.但是我出现的情况是只有某个小于2M的特定文件传不上某些个服务器.我先是怀疑2003 sp2的问题,所以先卸载了其中的一台机器的sp2,依然.改变传输模式依然不能完全解决.后来找到了一个方法,把发送缓冲(SEND BUFFER)从默认的64k降低到2k,问题解决.
這裡需要特別注意的是,一般這種情況可以先在命令行中使用FTP命令進行測試,如果可以使用FTP命令,那麼只需要修改傳輸模式即可。
主题:Recognize错误xxx详解一、Recognize错误xxx是什么?Recognize错误xxx是指当系统在尝试识别某个对象或实体时出现了错误的情况。
这个错误代码通常用于许多人工智能系统和语音识别软件中,表示系统无法成功识别用户的输入或者无法识别特定的对象或场景。
二、Recognize错误xxx可能的原因1. 数据质量不佳:输入的数据质量可能不够好,包括图像、声音等,导致系统无法正确识别。
2. 网络问题:在使用云端语音识别或人工智能系统时,网络连接不稳定或不畅可能导致识别错误xxx的出现。
3. 软件Bug:人工智能系统或语音识别软件本身存在bug或者逻辑错误,导致无法正确识别输入。
三、如何避免Recognize错误xxx的出现1. 提高数据质量:在进行语音识别或图像识别时,尽量提高输入数据的质量,确保清晰度和准确性。
2. 稳定网络连接:在使用云端语音识别或人工智能系统时,确保网络连接稳定和畅通。
3. 及时更新软件:保持软件和系统的更新,可以及时修复一些潜在的bug和错误。
四、如何处理Recognize错误xxx的情况1. 重新输入:如果是语音识别时出现了错误xxx,可以尝试重新输入并确保清晰度和准确性。
2. 检查网络:如果是云端识别时出现了错误xxx,可以先检查网络连接是否正常,确保稳定和畅通。
3. 反馈问题:如果错误xxx是由于软件本身的bug导致的,可以及时向软件提供反馈,并等待修复。
五、Recognize错误xxx的影响和解决Recognize错误xxx的出现可能会给用户带来识别不准确或者无法识别的问题,影响用户体验和系统的可靠性。
我们需要加强对数据质量和网络连接的管理,及时更新软件,并在出现问题时及时处理和反馈,以提升识别准确性和用户满意度。
六、结语Recognize错误xxx是在语音识别和人工智能系统中常见的问题,解决这个问题需要我们多方面进行考虑和管理,提高数据质量,保持稳定网络连接,及时更新软件,并在出现问题是及时处理和反馈,从而提升识别准确性和用户满意度。
系统错误提示代码解析:0 0x0000 操作成功完成。
1 0x0001 函数不正确。
2 0x0002 系统找不到指定的文件。
3 0x0003 系统找不到指定的路径。
4 0x0004 系统无法打开文件。
5 0x0005 拒绝访问。
6 0x0006 句柄无效。
7 0x0007 存储控制块被损坏。
8 0x0008 存储空间不足,无法处理此命令。
9 0x0009 存储控制块地址无效。
10 0x000A 环境不正确。
11 0x000B 试图加载格式不正确的程序。
12 0x000C 访问码无效。
13 0x000D 数据无效。
14 0x000E 存储空间不足,无法完成此操作。
15 0x000F 系统找不到指定的驱动器。
16 0x0010 无法删除目录。
17 0x0011 系统无法将文件移到不同的驱动器。
18 0x0012 没有更多文件。
19 0x0013 媒体受写入保护。
20 0x0014 系统找不到指定的设备。
21 0x0015 设备未就绪。
22 0x0016 设备不识别此命令。
23 0x0017 数据错误(循环冗余检查)。
24 0x0018 程序发出命令,但命令长度不正确。
25 0x0019 驱动器找不到磁盘上特定区域或磁道。
26 0x001A 无法访问指定的磁盘或软盘。
27 0x001B 驱动器找不到请求的扇区。
28 0x001C 打印机缺纸。
29 0x001D 系统无法写入指定的设备。
30 0x001E 系统无法从指定的设备上读取。
31 0x001F 连到系统上的设备没有发挥作用。
32 0x0020 另一个程序正在使用此文件,进程无法访问。
33 0x0021 另一个程序已锁定文件的一部分,进程无法访问。
34 0x0022 驱动器中的软盘不对。
将%2 插入(卷序列号: %3)驱动器%1。
36 0x0024 用来共享的打开文件过多。
38 0x0026 已到文件结尾。
39 0x0027 磁盘已满。
50 0x0032 不支持请求。
Windows下UDP连接被重置错误10054
现象:
在Windows 7系统上,A使用UDP socket,调用sendto函数向一个目标地址B发送数据,但是目标地址B没有接收数据,如果A此时立即调用recvfrom 试图接收目标地址B发回的数据的话,recvfrom会立即返回-1,WSAGetLastError()返回10045。
原因:
上述现象是Windows socket的一个bug,当UDP Socket在某次发送后收到一个不可到达的ICMP包时,这个错误将在下一个接收中返回,所以上面的套接字在下一次的接收中返回了SOCKET_ERROR,错误是10054。
解决办法:
使用WSAIoctl设置UDP socket的工作模式,让其忽略这个错误。
具体做法如下:
#include <Winsock2.h>
#include <Mstcpip.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
#define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR, 12)
BOOL bNewBehavior = FALSE;
DWORD dwBytesReturned = 0;
WSAIoctl(iSock, SIO_UDP_CONNRESET, &bNewBehavior, sizeof bNewBehavior, NULL, 0, &dwBytesReturned, NULL, NULL);
SIO_UDP_CONNREST选项:Controls whether UDP PORT_UNREACHABLE messages are reported. Set to TRUE to enable reporting. Set to FALSE to disable reporting.
备注:
setsockopt是修改套接口的属性,只是该套接口在工作的过程中需要用到的一些参数;WSAIoctl则是修改套接口的工作模式,更多的定义了这个套接口要以怎样的形式进行工作,有本质的区别。