winsock错误详解
3.2.2 WinSock 的错误处理函数[共3页]
58wVersionRequested =MAKEWORD(1,1); // 生成版本号1.1err = WSAStartup(wVersionRequested, &wsaData ); // 调用初始化函数if (err!=0 ) { return;} // 通知用户找不到合适的DLL文件// 确认返回的版本号是客户要求的1.1if ( LOBYTE(wsaData.wVersion )!=1 || HIBYTE(wsaData.wVersion )!=1) {WSACleanup(); return;}/*至此,可以确认初始化成功,WinSock.dll可用*/}2.注销函数WSACleanup( )当程序使用完WinSock.dll提供的服务后,应用程序必须调用WSACleanup( )函数,来解除与WinSock.dll库的绑定,释放WinSock实现分配给应用程序的系统资源,中止对Windows Sockets DLL的使用。
(1)WSACleanup( )函数的调用格式。
int WSACleanup ( void );返回值:如果操作成功,返回0,否则返回SOCKET_ERROR。
可以调用WSAGetLastError( )获得错误代码。
(2)WSACleanup( )函数的功能。
应用程序或DLL在使用Windows Sockets服务之前必须要进行一次成功的WSAStartup( )调用,当它完成了Windows Sockets的使用后,应用程序或DLL必须调用WSACleanup( ),将其从Windows Sockets的实现中注销,并且该实现释放为应用程序或DLL分配的任何资源。
任何打开的并已建立连接的SOCK_STREAM类型套接口在调用WSACleanup( )时会重置,而已经由closesocket( )关闭,但仍有要发送的悬而未决数据的套接口则不会受影响,该数据仍继续发送。
Windows常见错误代码解析及解决方法
Windows常见错误代码解析及解决方法Windows操作系统是目前使用最广泛的操作系统之一,然而,在使用过程中,用户经常会遇到各种错误代码。
本文将为您解析一些常见的Windows错误代码,并提供解决方法,帮助您更好地应对这些问题。
1. 0x80070057 –参数错误错误描述:这个错误代码通常表示操作时给定的参数不正确,可能是由于输入的格式不正确或超出范围等原因。
解决方法:检查所输入的参数是否正确,确认其格式和范围是否符合要求。
如果是从其他软件复制粘贴而来的参数,尝试手动输入,确保其正确性。
2. 0x80004005 –未指明的错误错误描述:这个错误代码通常是由于一些未知的问题导致的,系统无法提供具体的错误描述。
解决方法:尝试重新启动计算机,以清除可能的临时错误。
如果问题仍然存在,可以尝试更新或重新安装相关的驱动程序或软件。
3. 0x80070005 –拒绝访问错误描述:这个错误代码表示您无权访问某个文件、文件夹或系统资源。
解决方法:确保您具有足够的权限来访问该文件、文件夹或系统资源。
可以尝试右键点击该文件或文件夹,选择“属性”并在“安全”选项卡中更新访问权限。
4. 0x80240034 –软件更新失败错误描述:这个错误代码表示系统无法完成软件更新,通常是由于网络连接、更新服务器问题或其他相关因素导致的。
解决方法:检查您的网络连接,确保连接正常并具有足够的带宽。
如果问题仍然存在,可以尝试更改更新服务器,或者待网络稳定后再次尝试更新。
5. 0xc000021a –运行时错误错误描述:这个错误代码表示系统在启动过程中遇到严重的运行时错误,导致系统无法正常启动。
解决方法:尝试使用“安全模式”启动计算机,以便排除可能引起问题的驱动程序或软件。
如果问题仍然存在,可以尝试使用Windows 安装盘进行系统修复,或者重新安装操作系统。
6. 0x80070002 –找不到指定的文件错误描述:这个错误代码表示系统无法找到指定的文件或路径。
netshwinsockreset命令怎么用来修复网络连接错误
netsh winsock reset命令怎么用来修复网络连接错误Winsock协议配置出了问题,可能很多用户不知道怎么解决,其实,重置Winsock协议配置就可以了。
winsock是Windows网络编程接口,winsock工作在应用层,它提供与底层传输协议无关的高层数据传输编程接口。
reset是对Winsock的重置操作。
当执行完winsock的命令重启计算机后,需要重新配置IP等网络配置信息。
下面,小编就来教教大家如何使用netsh winsock reset命令修复网络连接错误。
操作步骤:Windows Vista或 Windows 7重置 Winsock,请按照下列步骤操作:1、单击“开始”,在开始搜索框中键入cmd,右键单击“cmd.exe”,单击“以管理员身份运行”;2、在命令提示符处键入“netsh winsock reset”,然后按 Enter 键;3、重启计算机。
Windows XP 重置 Winsock,请按照下列步骤操作:1、单击“开始”,运行中输入cmd;2、然后输入命令 netsh winsock reset;3、重启计算机。
Windows 8重置 Winsock,请按照下列步骤操作:1、按下windows键和X键,选择“命令提示符(管理员)”;2、在命令提示符处键入“netsh winsock reset”,然后按 Enter 键;3、重启计算机。
补充:常见网络故障解决方法ip地址冲突:ip地址冲突是局域网中经常出现的问题,有的用户可能重做系统或其他原因丢失自己的IP地址,在重新写IP的时候和其他人的IP地址一样导致ip地址出错,此时电脑右下角就会有个提示框提示你IP地址已经有人用。
部门网管应该统计好部门人员的IP地址,当出现问题时可有资料可循,避免IP地址冲突。
计算机网卡故障,一般的主机网卡都带有网卡指示灯,网卡灯有两种类型,一种是只有单灯,一种是双灯。
一般来说,单灯是绿色,而双灯一个是绿色,一个是橙色(1000M网络,如黄色则是100MM网络)。
socket错误详解
WSAEINTR (10004)∙翻译:中断函数调用。
∙说明:阻止操作被中断通过调用WSACancelBlockingCall (Wsapiref_704y.asp)。
WSAEACCES (10013)∙翻译:权限被拒绝。
∙说明:尝试访问套接字访问权限被禁止的方式。
例如,用于发送到广播的地址,但广播的权限未设置通过使用setsockopt(SO_BROADCAST) 时,将发生此错误。
另一个可能导致WSAEACCES 错误的原因是,当调用绑定(Wsapiref_6vzm.asp)函数(在Microsoft Windows NT 4.0 Service Pack 4 [SP4] 或更高版本),另一个程序、服务或内核模式驱动程序绑定到同一地址具有独占访问权。
这种独占的访问是一项新功能的Windows NT 4.0 SP4 和更高版本,并且它使用SO_EXCLUSIVEADDRUSE 选项的实现。
WSAEFAULT (10014)∙翻译:错误的地址。
∙说明:尝试使用指针参数的调用时,系统检测到一个无效的指针地址。
如果程序传递了无效的指针值,或者如果缓冲区的长度太小,则会发生此错误。
例如,如果一个参数,它是一种SOCKADDR 结构的长度小于sizeof(SOCKADDR) 的值,将发生此问题。
WSAEINVAL (10022)∙翻译:无效的参数。
∙说明:setsockopt (Wsapiref_94aa.asp) 函数提供了无效的参数(例如,指定参数的%)。
有时,它也就是从插座的当前状态,调用例如,未在侦听的套接字接受(Wsapiref_13aq.asp)。
WSAEMFILE (10024)∙翻译:打开的文件太多。
∙说明:有太多打开的套接字。
每个实现都可能具有套接字句柄可用的最大数目。
这些句柄可能会提供每个进程的全局,或每个线程。
WSAEWOULDBLOCK (10035)∙翻译:资源暂时不可用。
∙说明:将返回此错误,无法立即完成,例如,非阻塞套接字操作从接收(Wsapiref_2i9e.asp)时无数据排队要从套接字读取。
Windows Sockets 错误码及出错原因
EMSGSIZE
10040
同BSD
WSAEPROTOTYPE
EPROTOTYPE
10041
同BSD
WSAENOPROTOOPT
ENOPROTOOPT
10042
同BSD
WSAEPROTONOSUPPORT
EPROTONOSUPPORT
10043
同BSD
WSAESOCKTNOSUPPORT
NO_RECOVERY
11003
同BSD
WSANO_DATA
NO_DATA
11004
同BSD
A.2Windows Sockets错误码扩展描述
下面给出WSAGetLastError()函数返回的可能错误码按字母顺序排列的列表,同时给出简要的扩展描述。
WSAEACCES (10013) Permission denied.
WSAEDESTADDRREQ (10039) Destination address required.
在套接字上一个操作所必须的地址被遗漏。例如,如果sendto()函数被调用且远程地址为ADDR_ANY时,此错误被返回。
WSAEFAULT (10014) Bad address.
系统检测到调用试图使用的一个指针参数指向的是一个非法指针地址。如果应用程序传递一个非法的指针值,或缓冲区长度太小,此错误发生。例如,参数为结构sockaddr,但参数的长度小于sizeof(struct sockaddr)。
试图和一个不可达主机进行套接字操作。参见WSAENETUNREACH。
WSAEINPROGRESS (10036) Operation now in progress.
误删winsock和winsock2注册表的解决方案
误删winsock和winsock2注册表的解决方案全文共四篇示例,供读者参考第一篇示例:随着计算机技术的不断发展,我们常常会在使用电脑的过程中遇到各种各样的问题。
注册表错误是一种比较常见的问题之一。
今天我们要讨论的是关于误删winsock和winsock2注册表的解决方案。
让我们先了解一下winsock和winsock2是什么。
Winsock是Windows套接字的缩写,是Windows系统下用于进行网络通信的API。
而winsock2则是对winsock的进一步扩展和升级,提供更多的功能和性能。
在Windows系统中,winsock和winsock2注册表信息的正确性对于网络连接的正常运行至关重要。
如果不小心误删了winsock和winsock2的注册表信息,可能会导致网络连接无法正常工作,无法上网或者无法访问局域网等问题。
在面对这种情况时,我们可以采取以下几种解决方案来修复这个问题。
第一种解决方案是使用系统还原。
系统还原是Windows系统自带的一个功能,可以将系统恢复到之前的某个时间点,从而还原注册表信息。
你可以依次点击开始菜单-所有程序-附件-系统工具-系统还原,然后按照系统提示选择一个可以恢复注册表信息的时间点进行还原操作。
第二种解决方案是使用命令行工具修复。
你可以按下Win+R组合键打开运行窗口,输入“cmd”后按回车键,打开命令行窗口。
在命令行窗口中,输入以下命令可以重新安装winsock和winsock2的注册表信息:netsh winsock resetnetsh winsock reset catalog执行完以上命令后,重启计算机,看看网络连接是否恢复正常。
第三种解决方案是使用第三方工具修复。
如果以上两种方法都不起作用,你还可以使用一些专门的注册表修复工具来修复winsock和winsock2注册表信息。
常见的工具有CCleaner、Wise Registry Cleaner等,你可以下载安装这些工具,然后按照软件指引来修复注册表信息。
wsreset 参数
wsreset 参数
wsreset 是一个命令行工具,用于重置Windows 上的Winsock 注册表。
Winsock 是Windows 操作系统中用于网络通信的组件。
wsreset 命令通常用于修复网络连接问题。
当Windows 上的Winsock 注册表出现错误或损坏时,可能会导致网络连接问题。
通过运行wsreset 命令,可以重置Winsock 注册表,从而修复这些错误并恢复网络连接。
wsreset 命令的语法如下:
wsreset [/t <timeout>]
其中,/t <timeout> 参数是可选的,用于指定超时时间(以毫秒为单位)。
如果不指定超时时间,默认超时时间为30000 毫秒(30 秒)。
请注意,wsreset 命令可能需要管理员权限才能运行。
因此,在运行该命令时,可能需要以管理员身份运行命令提示符或PowerShell。
另外,请谨慎使用wsreset 命令。
在运行该命令之前,请确保您了解其作用和潜在的风险。
如果不确定是否需要运行该命令,请先咨询专业的技术支持人员或参考相关文档和教程。
[最新]WSAGetLastError error code 错误代码
10004—WSAEINTR函数调用中断。
该错误表明由于对WSACancelBlockingCall的调用,造成了一次调用被强行中断。
10009—WSAEBADF文件句柄错误。
该错误表明提供的文件句柄无效。
在MicrosoftWindowsCE下,socket函数可能返回这个错误,表明共享串口处于“忙”状态。
10013—WSAEACCES权限被拒。
尝试对套接字进行操作,但被禁止。
若试图在sendto或WSASendTo中使用一个广播地址,但是尚未用setsockopt和SO_BROADCAST这两个选项设置广播权限,便会产生这类错误。
10014—WSAEFAULT地址无效。
传给Winsock函数的指针地址无效。
若指定的缓冲区太小,也会产生这个错误。
10022—WSAEINVAL参数无效。
指定了一个无效参数。
例如,假如为WSAIoctl调用指定了一个无效控制代码,便会产生这个错误。
另外,它也可能表明套接字当前的状态有错,例如在一个目前没有监听的套接字上调用accept或WSAAccept。
10024—WSAEMFILE打开文件过多。
提示打开的套接字太多了。
通常,Microsoft提供者只受到系统内可用资源数量的限制。
10035—WSAEWOULDBLOCK资源暂时不可用。
对非锁定套接字来说,如果请求操作不能立即执行的话,通常会返回这个错误。
比如说,在一个非暂停套接字上调用connect,就会返回这个错误。
因为连接请求不能立即执行。
10036—WSAEINPROGRESS操作正在进行中。
当前正在执行非锁定操作。
一般来说不会出现这个错误,除非正在开发16位Winsock应用程序。
10037—WSAEALREADY操作已完成。
一般来说,在非锁定套接字上尝试已处于进程中的操作时,会产生这个错误。
比如,在一个已处于连接进程的非锁定套接字上,再一次调用connect或WSAConnect。
另外,服务提供者处于执行回调函数(针对支持回调例程的Winsock函数)的进程中时,也会?出现这个错误。
socket常见错误代码解析
socket常见错误代码解析Socket error 0 - Directly send errorSocket error 10004 - Interrupted function callSocket error 10013 - Permission deniedSocket error 10014 - Bad addressSocket error 10022 - Invalid argumentSocket error 10024 - Too many open filesSocket error 10035 - Resource temporarily unavailableSocket error 10036 - Operation now in progressSocket error 10037 - Operation already in progressSocket error 10038 - Socket operation on non-socketSocket error 10039 - Destination address requiredSocket error 10040 - Message too longSocket error 10041 - Protocol wrong type for socketSocket error 10042 - Bad protocol optionSocket error 10043 - Protocol not supportedSocket error 10044 - Socket type not supportedSocket error 10045 - Operation not supportedSocket error 10046 - Protocol family not supportedSocket error 10047 - Address family not supported by protocol family Socket error 10048 - Address already in useSocket error 10049 - Cannot assign requested addressSocket error 10050 - Network is downSocket error 10051 - Network is unreachableSocket error 10052 - Network dropped connection on resetSocket error 10053 - Software caused connection abortSocket error 10054 - Connection reset by peerSocket error 10055 - No buffer space availableSocket error 10056 - Socket is already connectedSocket error 10057 - Socket is not connectedSocket error 10058 - Cannot send after socket shutdownSocket error 10060 - Connection timed outSocket error 10061 - Connection refusedSocket error 10064 - Host is downSocket error 10065 - No route to hostSocket error 10067 - Too many processesSocket error 10091 - Network subsystem is unavailableSocket error 10092 - WINSOCK.DLL version out of rangeSocket error 10093 - Successful WSAStartup not yet performed Socket error 10094 - Graceful shutdown in progressSocket error 11001 - Host not foundSocket error 11002 - Non-authoritative host not foundSocket error 11003 - This is a non-recoverable errorSocket error 11004 - Valid name, no data record of requested typeWSAEADDRINUSE (10048) Address already in useWSAECONNABORTED (10053) Software caused connection abort WSAECONNREFUSED (10061) Connection refusedWSAECONNRESET (10054) Connection reset by peerWSAEDESTADDRREQ (10039) Destination address requiredWSAEHOSTUNREACH (10065) No route to hostWSAEMFILE (10024) Too many open filesWSAENETDOWN (10050) Network is downWSAENETRESET (10052) Network dropped connectionWSAENOBUFS (10055) No buffer space availableWSAENETUNREACH (10051) Network is unreachableWSAETIMEDOUT (10060) Connection timed outWSAHOST_NOT_FOUND (11001) Host not foundWSASYSNOTREADY (10091) Network sub-system is unavailable WSANOTINITIALISED (10093) WSAStartup() not performedWSANO_DATA (11004) V alid name, no data of that typeWSANO_RECOVERY (11003) Non-recoverable query errorWSA TRY_AGAIN (11002) Non-authoritative host foundWSA VERNOTSUPPORTED (10092) Wrong WinSock DLL version++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++常見SOCKET錯誤返回碼WSAEINTR (10004)被中斷的系統呼叫當以阻攔式進行的WinSock函式被WSACancelBlockingCall()中斷的時候,這個阻攔式函式會得到WSAEINTR這個錯誤訊息。
利用netsh,winsock,reset,命令修复网络应用错误
利用netsh,winsock,reset,命令修复网络应用错误篇一:重置winsocknetshwinsockresetwinsock是windows网络编程接口,winsock工作在应用层,它提供与底层传输协议无关的高层数据传输编程接口netshwinsockreset是把它恢复到默认状态中文名字重置winsock目录外号resettingwinsockcatalogue目录1简介2重置winsock重置为winsvac4为windows7用户重置winsock5 Winsock各种修复方法1简介netshwinsockreset命令,作用是重置winsock目录。
如果一台机器上的winsock协议配置有问题的话将会导致网络连接等问题,就需要用netshwinsockreset命令来重置winsock目录借以恢复网络。
这个命令可以重新初始化网络环境,以解决由于软件冲突、病毒原因造成的参数错误问题。
netsh是一个能够通过命令行操作几乎所有网络相关设置的接口,比如设置ip,dns,网卡,无线网络等,winsock是系统内部目录,winsock是windows网络编程接口,winsock工作在应用层,它提供与底层传输协议无关的高层数据传输编程接口,reset是对winsock的重置操作。
当执行完winsock的命令重启计算机后,需要重新配置ip。
2重置winsock要为windowsxp重置winsock,请按照下列步骤操作:1.点击开始,在操作过程中输入CMD。
2.然后输入命令netshwinsockreset。
3.重启电脑。
3为windowsvista重置winsock要重置Windows Vista的Winsock,请执行以下步骤:1.单击“开始”,在开始搜索框中键入cmd,右键单击“,单击“以管理员身份运行”,然后按“继续”。
2.在命令提示下,键入Netsh winsockset,然后按enter键。
Windows系统错误代码解析常见错误的原因和解决方案
Windows系统错误代码解析常见错误的原因和解决方案Windows操作系统作为目前最为广泛使用的操作系统之一,在日常使用中难免会遇到系统错误代码。
本文将针对常见的Windows系统错误代码进行解析,并为每种错误代码提供相应的原因分析和解决方案。
错误代码一:BSOD(蓝屏死机错误)原因分析:蓝屏死机错误是最常见的Windows系统错误代码之一,它通常是由硬件或软件故障引起的。
常见的原因包括内存损坏、驱动程序问题、硬件冲突等。
解决方案:1. 检查内存:运行内存诊断工具(如Windows内存诊断工具)来检查内存是否存在故障,并及时更换或修复损坏的内存条。
2. 更新驱动程序:升级或重新安装可能引起问题的驱动程序,特别是处理器、显卡和网络适配器的驱动程序。
3. 检查硬件冲突:如果最近添加了新硬件设备,请确保它与现有设备兼容,或者尝试暂时删除该设备以确定是否解决了问题。
错误代码二:0x80070005(访问被拒绝错误)原因分析:0x80070005错误通常表示操作系统或应用程序对访问资源的权限被拒绝。
这可能是由于权限设置不正确、安全软件的限制等原因引起的。
解决方案:1. 管理员权限:尝试使用管理员权限运行受影响的应用程序或操作系统,以获得更高的权限来访问资源。
2. 修改权限设置:在资源的属性设置中,确保你具有正确的访问权限。
例如,如果你无法访问某个文件夹,检查该文件夹的权限设置并将其更改为可适当访问。
3. 检查安全软件设置:某些安全软件可能会限制某些操作的访问权限,检查安全软件的设置并临时禁用它们以排除干扰。
错误代码三:0x80004005(未指定错误)原因分析:0x80004005错误是一个未指定错误,它可能由多种不同原因引起,如文件损坏、注册表设置错误、病毒感染等。
解决方案:1. 检查文件完整性:使用系统自带的文件检查工具(如sfc/scannow命令)扫描并修复可能损坏的文件。
2. 修复注册表:使用注册表编辑器(regedit命令)检查并修复可能引起问题的注册表设置,注意在操作注册表时谨慎,备份重要的注册表配置。
Winsock错误代码一览表
Winsock错误代码⼀览表sckOutOfMemory 7 内存不⾜ sckInvalidPropertyValue 380 属性值不效 sckGetNotSupported 394 属性不可读 sckGetNotSupported 383 属性是只读的 sckBadState 40006 所请求的事务或请求本⾝的错误协议或者错误连接状态 sckInvalidArg 40014 传递给函数的参数格式不确定,或者不在指定范围内 sckSuccess 40017 成功 sckUnsupported 40018 不⽀持的变量类型 sckInvalidOp 40020 在当前状态下的⽆效操作 sckOutOfRange 40021 参数越界 sckWrongProtocol 40026 所请求的事务或请求本⾝的错误协议 sckOpCanceled 10004 取消操作 sckInvalidArgument 10014 所请求的地址是⼴播地址,但未设置标记 sckWouldBlock 10035 套接字不成块,⽽指定操作将使之成块 sckInProgress 10036 制造块的Winsock操作在进⾏之中 sckAlreadyComplete 10037 完成操作。
未进⾏制作块的操作 sckNotSocket 10038 描述符不是套接字 sckMsgTooBig 10040 数据太⼤,不适于缓冲区的要求,因⽽被截断 sckPortNotSupported 10043 不⽀持指定的端⼝ sckAddressInUse 10048 地址在使⽤中 sckAddressNotAvailable 10049 来⾃本地机器的不可⽤地址 sckNetworkSubsystemFailed 10050 ⽹络⼦系统失败 sckNetworkUnreachable 10051 当前不能从主机到达⽹络 sckNetReset 10052 在设置SO_KEEPALIVE时连接超时 sckConnectAborted 10053 由于超时或者其它失败⽽中⽌接连 sckConnectionReset 10054 通过远端重新设置连接 sckNoBufferSpace 10055 没有可⽤的缓存空间 sckAlreadyConnected 10056 已连接的套接字 sckNotConnected 10057 未接连套接字 sckSockedShutdown 10058 已关闭套接字 sckTimedout 10060 套接字超时 sckConnectionRefused 10061 强⾏拒绝连接 sckNotInitialized 10093 套接字没有初始化 sckHostNotFound 11001 授权应答:未找到主机 sckHostNotFoundTryAgain 11002 ⾮授权应答:未找到主机,重试 sckNonRecoverableError 11003 不可恢复的错误 sckNoData 11004 ⽆效名,对所请求的类型⽆数据记录。
unrecognized windows sockets error
未识别的Windows套接字错误在Windows操作系统中,网络通信是通过套接字(Socket)来实现的。
套接字是一个抽象概念,用于描述应用程序和网络之间的一个端点。
在进行网络通信时,套接字提供了一种标准的接口,以便应用程序能够通过它来发送和接收数据。
然而,在使用Windows套接字编程时,有时会遇到一些套接字错误。
其中之一是“未识别的Windows套接字错误”(unrecognized windows sockets error)。
错误信息及原因当出现“未识别的Windows套接字错误”时,通常会伴随着一个具体的错误代码(error code)。
这个错误代码是一个整数值,用于指示出现错误的具体原因。
不同的错误代码代表了不同的问题,所以我们需要根据错误代码来判断产生错误的原因。
以下是一些常见的错误代码及其可能的原因:•WSANOTINITIALISED(10093):套接字库未初始化。
这可能是因为在尝试使用套接字之前没有正确地初始化套接字库,或者在套接字库已经被关闭后仍然尝试使用套接字。
•WSAENETDOWN(10050):网络下线。
这可能是因为计算机网络连接出现问题,例如网络连接中断或无法访问互联网。
•WSAECONNABORTED(10053):连接中止。
这通常是由于远程主机意外关闭了连接引起的,或者是由于防火墙或网络设备的设置导致连接被中断。
•WSAECONNRESET(10054):连接重置。
这可能是由于远程主机或网络设备强制关闭了连接引起的。
•WSAEAFNOSUPPORT(10047):不支持的地址族。
这可能是由于使用了无效的地址族引起的,例如在IPv4环境下使用IPv6地址。
解决方法针对不同的错误代码,我们可以采取不同的解决方法。
以下是一些常见的解决方法:1.检查套接字库的初始化:如果出现WSANOTINITIALISED错误,我们需要确保在使用套接字之前正确地初始化了套接字库。
包含了《Winsock2h》,创建SOCKET时出错。引起出错的语
一,创建一个win32,应用程序(Win32 Application),包含了<Winsock2.h>,创建SOCKET 时出错。
引起出错的语句:SOCKET myUDPSock = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP),问题现象:编译可以通过,连接时有如下错误,超找帮助发现可能执行函数时,没有连接到库,在Projects->settings link中加入ws2_32.lib链接,问题解决。
(2010-8-8)--------------------Configuration: WINMAIN3 - Win32 Debug--------------------Linking...WINMAIN3.obj : error LNK2001: unresolved external symbol __imp__socket@12Debug/WINMAIN3.exe : fatal error LNK1120: 1 unresolved externalsError executing link.exe.WINMAIN3.exe - 2 error(s), 0 warning(s)二、出现预编译文件找不到,问题原因可能是一个工作区包含了多个工程,第一个工程编译编译运行后,就会在工程设置里增加预编译头文件,新建的工程继承了原来工程的设置,所以在运行时会找原来的文件而找不到。
解决方法:更改工程设置,去掉这个预编译头文件如图:2010-8-14三、free和malloc的使用注意事项在一次编程中出现下面的断言错误,经过反复试验,发现是free的指针所指的内存不是malloc分配的,而是一个数组在定义时分配的。
结合msdn对free和malloc的解释:The free function deallocates a memory block (memblock) that was previously allocated by a call to calloc, malloc, or realloc. The number of freed bytes is equivalent to the number of bytes requested when the block was allocated (or reallocated, in the case of realloc). If memblock is NULL, the pointer is ignored and free immediately returns. Attempting to free an invalid pointer (a pointer to a memory block that was not allocated by calloc, malloc, or realloc) may affect subsequent allocation requests and cause errors.After a memory block has been freed, _heapmin minimizes the amount of free memory on the heap by coalescing the unused regions and releasing them back to the operating system. Freed memory that is not released to the operating system is restored to the free pool and is available for allocation again.可以看出malloc分配的内存是从heap(堆)中获得的,free函数也就只能free堆里的内存,因此,当调用函数去free一快栈里的内存是,就会有下面的错误。
windows 客户端网络问题:重置TCPIP 和 winsock
随着windows 系统中安装和网卡驱动相关的程序越来越多,安装卸载此类程序后经常会出现网卡不能正常动态获取IP,或者是网卡出现只发数据包不能接受收数据包的问题,导致这个问题的原因很可能是TCP/IP 已受损或(和)Winsock 注册表项已损坏,在这个离不开网络的世界让人很是不舒服,解决这个问题的办法首先建议先初始化IP协议,要是不能正常执行,可能需要初始化winsock 了,详细的信息如下:
使用手动方法重置 TCP/IP
可以在 NetShell 实用工具的 IP 上下文中使用 reset 命令。
请按照以下步骤使用 reset 命令来手动重置 TCP/IP:
1.若要打开命令提示符,请单击“开始”,然后单击“运行”。
在“打开”
框中复制并粘贴(或键入)以下命令,然后按 Enter:
cmd
2.在命令提示符下,复制并粘贴(或键入)以下命令,然后按 Enter:
netsh int ip reset c:\resetlog.txt
注意:如果不希望指定日志文件的目录路径,请使用以下命令:
netsh int ip reset resetlog.txt
3.重新启动计算机。
详细信息参考:/kb/299357/zh-cn
使 Winsock2 从损坏中恢复的手动步骤
Windows XP(含 Service Pack 2)说明
要在已安装 Windows XP Service Pack 2 (SP2) 的情况下修复 Winsock,请在命令提示符处键入 netsh winsock reset,然后按 Enter。
详细信息参考:/kb/811259/。
winsock2和winsock定义冲突
winsock2和winsock定义冲突winsock.h与winsock2.h冲突的解决方法Sunny.manwinsock2.h内部#include windows.h。
因为向下兼容的原因,windows.h 包含了winsock.h,这会造成一些定义和winsock2.h冲突。
解决的办法是先定义WIN32_LEAN_AND_MEAN,然后再包含windows.h或者afxwin.h.举例来说,用windows.h的话#ifndef WIN32_LEAN_AND_MEAN#define WIN32_LEAN_AND_MEAN#endif如果不这样定义将会此起下列错误:winsock2.h(2180) : error C2375: 'WSASetLastError' : redefinition; different linkagewinsock.h(874) : see declaration of 'WSASetLastError'winsock2.h(99) : error C2011: 'fd_set' : 'struct' type redefinition winsock2.h(134) : warning C4005: 'FD_SET' : macro redefinition winsock.h(83) : see previous definition of 'FD_SET' winsock2.h(143) : error C2011: 'timeval' : 'struct' type redefinition winsock2.h(199) : error C2011: 'hostent' : 'struct' type redefinition winsock2.h(212) : error C2011: 'netent' : 'struct' type redefinition winsock2.h(219) : error C2011: 'servent' : 'struct' type redefinition winsock2.h(226) : error C2011: 'protoent' : 'struct' type redefinition winsock2.h(310) : error C2011: 'in_addr' : 'struct' type redefinitionwinsock2.h(368) : error C2011: 'sockaddr_in' : 'struct' type redefinition winsock2.h(378) : error C2011: 'WSAData' : 'struct' type redefinition winsock2.h(430) : warning C4005: 'SO_DONTLINGER' : macro redefinition winsock.h(391) : seeprevious definition of 'SO_DONTLINGER'winsock2.h(483) : warning C4005: 'AF_IPX' : macro redefinition winsock.h(449) : see previous definition of 'AF_IPX' 在这里仅列举了一些常见的错误,可能比这还多,但其原因都只是一个。
[最新]WSAGetLastError error code 错误代码
10004—WSAEINTR函数调用中断。
该错误表明由于对WSACancelBlockingCall的调用,造成了一次调用被强行中断。
10009—WSAEBADF文件句柄错误。
该错误表明提供的文件句柄无效。
在MicrosoftWindowsCE下,socket函数可能返回这个错误,表明共享串口处于“忙”状态。
10013—WSAEACCES权限被拒。
尝试对套接字进行操作,但被禁止。
若试图在sendto或WSASendTo中使用一个广播地址,但是尚未用setsockopt和SO_BROADCAST这两个选项设置广播权限,便会产生这类错误。
10014—WSAEFAULT地址无效。
传给Winsock函数的指针地址无效。
若指定的缓冲区太小,也会产生这个错误。
10022—WSAEINVAL参数无效。
指定了一个无效参数。
例如,假如为WSAIoctl调用指定了一个无效控制代码,便会产生这个错误。
另外,它也可能表明套接字当前的状态有错,例如在一个目前没有监听的套接字上调用accept或WSAAccept。
10024—WSAEMFILE打开文件过多。
提示打开的套接字太多了。
通常,Microsoft提供者只受到系统内可用资源数量的限制。
10035—WSAEWOULDBLOCK资源暂时不可用。
对非锁定套接字来说,如果请求操作不能立即执行的话,通常会返回这个错误。
比如说,在一个非暂停套接字上调用connect,就会返回这个错误。
因为连接请求不能立即执行。
10036—WSAEINPROGRESS操作正在进行中。
当前正在执行非锁定操作。
一般来说不会出现这个错误,除非正在开发16位Winsock应用程序。
10037—WSAEALREADY操作已完成。
一般来说,在非锁定套接字上尝试已处于进程中的操作时,会产生这个错误。
比如,在一个已处于连接进程的非锁定套接字上,再一次调用connect或WSAConnect。
另外,服务提供者处于执行回调函数(针对支持回调例程的Winsock函数)的进程中时,也会?出现这个错误。
利用netsh,winsock,reset,命令修复网络应用错误
利用netsh,winsock,reset,命令修复网络应用错误篇一:重置winsocknetshwinsockresetwinsock是windows网络编程接口,winsock工作在应用层,它提供与底层传输协议无关的高层数据传输编程接口netshwinsockreset是把它恢复到默认状态中文名重置winsock目录外文名Resettingwinsockcatalogue目录1简介2重置winsock3为windowsVista重置winsock4为windows7用户重置winsock5wInsocK各种修复方法1简介netshwinsockreset命令,作用是重置winsock目录。
如果一台机器上的winsock协议配置有问题的话将会导致网络连接等问题,就需要用netshwinsockreset命令来重置winsock目录借以恢复网络。
这个命令可以重新初始化网络环境,以解决由于软件冲突、病毒原因造成的参数错误问题。
netsh是一个能够通过命令行操作几乎所有网络相关设置的接口,比如设置Ip,Dns,网卡,无线网络等,winsock是系统内部目录,winsock是windows网络编程接口,winsock工作在应用层,它提供与底层传输协议无关的高层数据传输编程接口,reset是对winsock的重置操作。
当执行完winsock的命令重启计算机后,需要重新配置Ip。
2重置winsock要为windowsxp重置winsock,请按照下列步骤操作:1.单击“开始”,运行中输入cmd。
2.然后输入命令netshwinsockreset。
3.重启计算机。
3为windowsVista重置winsock要为windowsVista重置winsock,请按照下列步骤操作:1.单击“开始”,在开始搜索框中键入cmd,右键单击“,单击“以管理员身份运行”,然后按“继续”。
2.在命令提示符处键入netshwinsockreset,然后按enter。
VB6Winsock解析中文乱码问题解决办法
VB6Winsock解析中文乱码问题解决办法在项目中遇到Winsock连接C#编写的socket服务端,取到的中文乱码。
解决如下Vb6代码1.Option Explicit2.Private Declare Function WideCharT oMultiByte Lib "kernel 32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lp WideCharStr As Long, ByVal cchWideChar As Long, ByRef lpMult iByteStr As Any, ByVal cchMultiByte As Long, ByVal lpDefaultCha r As String, ByVal lpUsedDefaultChar As Long) As Long3.Private Declare Function MultiByteToWideChar Lib "kernel 32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lp MultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWide CharStr As Long, ByVal cchWideChar As Long) As Long4.Private Const CP_UTF8 = 65001Vb6代码1.Function Utf8T oUnicode(ByRef Utf() As Byte) As String2.Dim lRet As Long3.Dim lLength As Long4.Dim lBufferSize As Long5.lLength = UBound(Utf) - LBound(Utf) + 16.If lLength <= 0 Then Exit Function7.lBufferSize = lLength * 28.Utf8ToUnicode = String$(lBufferSize, Chr(0))9.lRet = MultiByteToWideChar(CP_UTF8, 0, VarPtr(Utf(0)), lL ength, StrPtr(Utf8T oUnicode), lBufferSize)10.If lRet <> 0 Then11.Utf8ToUnicode = Left(Utf8ToUnicode, lRet)12.End If13.End Function读取到socket数据调用Utf8ToUnicode解决乱码。
unrecognized windows sockets error 0
unrecognized windows sockets error 0摘要:1.问题描述2.问题原因3.解决方法4.预防措施正文:unrecognized windows sockets error 0 是一个网络编程错误,通常在Windows 操作系统中出现。
当应用程序尝试使用Windows Sockets API 来创建或操作套接字时,可能会发生此错误。
该错误代码表示Windows Sockets 无法识别所提供的参数或操作。
该错误的原因可能包括:- 套接字被关闭或创建失败- 提供了无效的参数- 网络连接中断- 操作系统故障要解决这个问题,您可以尝试以下方法:1.检查套接字是否已关闭或创建失败。
如果是,请重新创建套接字并确保使用正确的参数。
2.检查提供的参数是否有效。
请参阅Windows Sockets API 文档以确保使用正确的参数。
3.检查网络连接是否正常。
如果网络连接有问题,请尝试重新连接或联系网络管理员。
4.如果问题仍然存在,请尝试重新启动操作系统以排除系统故障。
要预防unrecognized windows sockets error 0,请确保:- 使用最新的操作系统和Windows Sockets 驱动程序- 在编写网络应用程序时,请仔细阅读Windows Sockets API 文档并确保使用正确的参数- 定期检查网络连接并确保网络连接正常- 定期备份重要数据以防止数据丢失总之,unrecognized windows sockets error 0 是一个常见的网络编程错误,可能由多种原因引起。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sckNoBufferSpace 10055 没有可用的缓存空间
sckAlreadyConnected 10056 已连接的套接字
sckNotConnected 10057 未接连套接字
sckSockedShutdown 10058 已关闭套接字
sckTimedout 10060 套接字超时
sckConnectionRefused 10061 强行拒绝连接
sckNotInitialized 10093 套接字没有初始化
sckHostNotFound 11001 授权应答:未找到主机
sckHostNotFoundTryAgain 11002 非授权应答:未找到主机,重试
sckNonRecoverableError 11003 不可恢复的错误
sckInProgress 10036 制造块的Winsock操作在进行之中
sckAlreadyComplete 10037 完成操作。未进行制作块的操作
sckNotSocket 10038 描述符不是套接字
sckMsgTooBig 10040 数据太大,不适于缓冲区的要求,因而被截断
sckOutOfMemory 7 内存不足
sckInvalidPropertyValue 380 属性不可读
sckGetNotSupported 383 属性是只读的
sckBadState 40006 所请求的事务或请求本身的错误协议或者错误连接状态
sckInvalidArg 40014 传递给函数的参数格式不确定,或者不在指定范围内
sckSuccess 40017 成功
sckUnsupported 40018 不支持的变量类型
sckInvalidOp 40020 在当前状态下的无效操作
sckOutOfRange 40021 参数越界
sckNetworkUnreachable 10051 当前不能从主机到达网络
sckNetReset 10052 在设置SO_KEEPALIVE时连接超时
sckConnectAborted 10053 由于超时或者其它失败而中止接连
sckConnectionReset 10054 通过远端重新设置连接
sckPortNotSupported 10043 不支持指定的端口
sckAddressInUse 10048 地址在使用中
sckAddressNotAvailable 10049 来自本地机器的不可用地址
sckNetworkSubsystemFailed 10050 网络子系统失败
sckWrongProtocol 40026 所请求的事务或请求本身的错误协议
sckOpCanceled 10004 取消操作
sckInvalidArgument 10014 所请求的地址是广播地址,但未设置标记
sckWouldBlock 10035 套接字不成块,而指定操作将使之成块