常见socket错误返回码.docx

上传人:b****8 文档编号:9959495 上传时间:2023-05-22 格式:DOCX 页数:14 大小:21.03KB
下载 相关 举报
常见socket错误返回码.docx_第1页
第1页 / 共14页
常见socket错误返回码.docx_第2页
第2页 / 共14页
常见socket错误返回码.docx_第3页
第3页 / 共14页
常见socket错误返回码.docx_第4页
第4页 / 共14页
常见socket错误返回码.docx_第5页
第5页 / 共14页
常见socket错误返回码.docx_第6页
第6页 / 共14页
常见socket错误返回码.docx_第7页
第7页 / 共14页
常见socket错误返回码.docx_第8页
第8页 / 共14页
常见socket错误返回码.docx_第9页
第9页 / 共14页
常见socket错误返回码.docx_第10页
第10页 / 共14页
常见socket错误返回码.docx_第11页
第11页 / 共14页
常见socket错误返回码.docx_第12页
第12页 / 共14页
常见socket错误返回码.docx_第13页
第13页 / 共14页
常见socket错误返回码.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

常见socket错误返回码.docx

《常见socket错误返回码.docx》由会员分享,可在线阅读,更多相关《常见socket错误返回码.docx(14页珍藏版)》请在冰点文库上搜索。

常见socket错误返回码.docx

常见socket错误返回码

常见错误返回码(转)

()被中断的系统呼叫

当以阻拦式进行的函式被()中断的时候,这个阻拦式函式会得到这个错误讯息。

读者要注意的是,当你的程式有用去中断阻拦式函式的时候,你必须为这个阻拦式函式写处理错误讯息的程式码,否则你的程式可能会出现些无预期的错误。

原则上,所有能以阻拦式进行的函式都可能会发生这个错误。

()错误的档案代码

柏克莱介面中,档案描述子和描述子是相通的,开启可以想像成开启一个档案。

在柏克莱介面的意义是指错误的描述子,这个错误的描述子可能是未经开启的或是以关闭的。

在中有个相通的错误代码,用来指定错误的描述子。

详细说明请参考部分。

()无此权限

对于柏克莱介面函式,这个错误发生的原因通常是开启一个不具有开启权限的档案或。

例如在上,一般的使用者不能开启的,通常是超级使用者()才有此权限。

如果一般的使用者企图开启的,将会得到这个错误讯息。

对于函式介面,发生此错误的函式有二:

()和()。

当利用()或()传送资料的时候,将目的位址设成广播位址(),但是并未呼叫()设定选项时便会发生错误。

()错误的记忆体位址

系统侦测出使用错误的记忆体位址。

呼叫函式时,常常会有参数是以指标的方式传入,这个指标可能是指向一个结构,如结构,或是指向一个资料缓冲区。

当程式不小心传入一个错误记忆体未指的指标时,就会发生这个错误。

此外,当指标所指向的记忆体区块太小的时候,也会发生这个错误。

()参数错误

如果传入不正确的参数给函式的话,会导致这个错误。

如果参数是一个结构的指标,此结构内容填入不正确的值,也会导致这个错误。

例如,()函式的()参数只能是、或,若是设定成其他数值,就会出现这个错误。

在网路程式的设计中,函式和函式之间的呼叫通常有一定的顺序,如过不照这个顺序进行,也会出现这个错误。

底下是针对每个相关函式的详细说明。

函式

错误发生的时机

()

呼叫()之前没有成功呼叫()

()

已经成功呼叫()函式而指定的名称了

()

没有呼叫()函式指定名称

()

已经处于连接状态或是没有呼叫()函式指定名称

()和()

对于,没有呼叫()函式指定位址、和协定等;对于,连接尚未建立

()和()

对于,没有呼叫()函式指定位址、和协定等;对于,连接尚未建立

原则上,所有函式其参数所能设定的值有一定的范围,或是有一些特定的值,这些函式都有可能发生这个错误。

()太多开启的档案

柏克莱介面的解释是开启过多的档案,超过档案开启数的限制。

在柏克莱将档案和的开启以档案描述子()描述。

对于是有别于档案的,在的意义是开启太多的。

这个程式通常发生在同一部机器中执行过多的网路程式,以致开启过多的。

另一种可以避免的错误是应用程式没有正常的关闭不用的,以致资源耗尽。

()函式作用阻拦中

当函式作用是以非阻拦式进行,而此刻的函式作用再返回时其函式作用尚未完成的时候,就会出现这个错误。

举例来说,假设()以非阻拦式传送一段资料至远端主机,假设函式返回时得到这个错误,这样表示这一段资料不能在这一次的()函式呼叫中传送完。

对于()函式,这个错误表示尚未成功地连接上远端主机,连接要求正在进行中。

若你的程式中有利用()函式以设定时限,在呼叫()时有可能出现这个错误。

对于非同步的网路资料函式(())而言,得到错误,表示要查询的网路资料目前无法取得。

这通常是个暂时性的错误,应用程式可能稍后再呼叫相同的函式就会成功。

()有阻拦函式正在执行中

对于每个或,只允许”一”个阻拦式函式的执行。

如果已有阻拦式函式正在执行,而又呼叫到函式,函式会传回的错误。

这个错误也会发生在需要长执行时间的函式,如()。

有一种情况是这样:

当执行”非阻拦式”的()函式两次,由于是非阻拦式的(),第一次的呼叫传回错误码。

此时要求连接动作尚未完成,第二次的()呼叫就会得到的错误。

我们的建议是在有可能发生这种错误的函式呼叫前加上()判断是否有阻拦式函式正在执行。

如果有的话,我们可能需要将正在进行的阻拦式函式取消掉,或是将目前想要做的事取消掉。

()函式作用已完成

这个错误的意思在柏克莱介面和函式的解释上有很大的差别。

柏克莱介面的解释是函式作用已完成;在中,的意思是:

”你想要取消的非同步事件已经被取消了!

”,也就是当你呼叫()试图去取消一个非同步事件时,而该事件已被取消了。

()非法的

通常函式都要以描述子当参数传入,如果这个描述子所代表的不是正确开启的或是根本没有开启,函式就会得到错误。

原则上,只要以描述子当参数传入的函式都有发生错误的可能。

()需要对方位址

当你要传送资料给远端机器,必须指定对方的位址(和等等),才能正确送达。

检查看看你的应用程式是否在呼叫()或()时,正确地填入对方的结构。

()讯息太长,缓冲区无法容纳

这个错误发生原因是由于讯息资料过大,缓冲区无法容纳,这里的缓冲区可能是使用者指定的或是系统内部用的缓冲区。

会发生这个错误的函式有四:

函式

错误发生的时机

()、()

利用接收资料时,如果()、()指定的缓冲区长度小于接收进来,这时后过长的会被丢弃并告诉函式这个错误

()、()

利用传送资料时,如果送出的资料缓冲区大于所能传递的最大长度,这时()和()传回发生这个错误讯息

()错误的协定型别

错误产生的原因是在()函式呼叫时指定了不支援的协定举例来说,你不可以在()设定以协定传输()。

并不支援通讯协定。

如果你真的有心去测试的话,程式中故意如此呼叫()(,,);你会发现,这样的()函式呼叫会得到错误。

这显然不对,照理应该得到这个错误才对。

这个错误表示指定了错误的协定,而所指定的协定是该位址家族(协定家族)所支援的,但不适用于型别。

以上述的例子来看,协定是属于这个位址家族,但是并不能用于()上。

这个错误表示所指定的协定是该协定家族所不支援的,意思上和有点出入。

事实上,和之间的差别是微乎其微的。

在发展网路程式的时候,这两种错误都是代表着同一种状况协定指定错误。

总之,你永远也没办法试出这个错误。

()错误的协定选项()

这个错误主要是针对()和()函式的。

这两个函式可以以参数设定不同的选项而有不同的作用。

对于每个选项多多少少会有些限制,如有些选项只能用在,而有些只能用在。

如果违反这些限制,就会发生这个错误。

请看下表:

()不支援这些选项

有些厂商的协定核心不支援这些选项

这些选项只适用于()函式,不能作用于()函式

()不支援的协定

协定核心不支援所指定的通讯协定。

举例来说当你用()函式时,第二个参数指定为,第三个参数指定为,如此()呼叫会得到这个错误。

版并不支援协定,所以呼叫()指定这个协定,就会发生错误。

事实上,产生错误的状况不只这样,详见。

()不支援的型别

目前使用的版本不支援函式所指定的型别。

举例来说,完全根据版的规格书发展的协定核心,并不支援这个型别。

在呼叫()函式时,位址家族选()而型别选的话,就会发生这个错误。

有些厂商发展的协定核心除了支援版的规格书所规范之外,还提供许多不同的功能。

我们建议您在发展程式时,如果有必要用到这些额外的功能,请好好考虑一下和其他环境相容性的问题。

()作用函式不支援此类

函式作用不支援目前型别。

举例来说,()和()函式只能作用在连接导向的(),也就是上。

对于()、()、()和()函式,也是只能用于连接导向的。

()不支援的协定家族

目前的协定核心不支援所指定的协定家族。

这个错误和很像,目前这个错误被所取代了,读者可以参考说明部分。

()不支援的位址家族

使用协定不支援指定的位址家族。

对于()函式,错误发生原因是函式转物错误的参数。

对于以结构为参数的函数,错误发生的原因常是网路协定不支援结构中(成员)指定的位址家族。

()位址已被指定了

所指定的”位址”正在使用中。

这里的位址是指的名称,包含三部分:

协定、和位址。

这个错误发生的原因通常是应用程式试图利用()函式去指定时,此已被其他应用程式所占用了。

这种情况发生于在同一部主机上执行两个相同性质(指定相同名称)的程式,第二的程式会因为第一个程式先占用某个而得到此错误讯息。

还有一种常见的情况就是在撰写程式时,利用()去指定的,此举常会有这个错误发生。

并非不能用()去指定的,而是你无法确定程式执行的时候,所指定的是否有其他程式正在使用。

通常很少会在程式中呼叫()函式,一般的程式都是让系统帮你选一个适当的。

此外,应用程式可以利用()的选项,允许可以重复使用,可是我们并不鼓励这样做。

这样可能会造成核心在判断应用程式上的困扰。

()无法指定位址

错误发生的原因通常是指定了该部机器不应该有的位址。

这里的位址包含三个部分:

网路协定、和位址。

在柏克莱介面中,呼叫()时,若指定的位址不是本地机器该有的位址,就会出现这个错误。

在呼叫()或()函式时,如果结构中的填””,如此也会导致这个错误(在上是错误)。

对于函式,错误发生的时机和柏克莱函式类似,()和()都会导致这样的错误。

对于函式,错误发生的时机和柏克莱函式类似()和()都会导致这样的错误。

版的规格书中并没有提到()函式会导致错误,不过根据我们测试的结果,()也会导致这样的错误。

 

()网路出错

下层的网路系统发生问题,函式无法执行。

这是一个相当严重的问题,这会使得几乎所有的函式呼叫失败。

若你的函式发生错误,那么请你该好好地检查你的网路卡,网路卡驱动程式和你的协定核心。

()无法连上指定的网路

在柏克莱介面中,这个错误的意思是无法和对方网路系统取得联系。

在。

规格中,相通于柏克莱介面中的。

()网路已被重新设定

对方主机出错而重新开机。

在本地主机呼叫和传送资料有关的函式就会得到这个错误。

对于()函式,这个错误发生的原因在于试图设定于逾时()的连接。

()中断连接

在连接建立后,当有某种原因导致协定核心不断地重送资料,而且都重送失败的时候,协定将连接中断。

此时,应用程式就会收到这个错误。

()连结已被对方重新设定

连结已被对方系统强迫中断了。

协定核心如果侦测出的连接发生问题的话,它会传一个表示连接重设()的讯息给对方。

此时对方程式会得到的错误讯息。

()缓冲区过小

核心无法配置足够的缓冲区,无法执行该程式。

这个错误的发生和整个系统资源有关。

如果整个本身可用的资源就很少,所能同时执行的程式也少。

也有可能是执行了"不良"的应用程式,没有正常的使用和归还系统资源(如记忆体)。

或是某些应用程式的不正常关闭,也会占用系统资源。

()已经连接

网路函式通常会有一定的呼叫顺序,有的函式呼叫成功后便不能再呼叫,否则会出现错误。

当连接建立时,程式呼叫()成功,而程式呼叫()成功。

此时若程式再呼叫一次()函式的话,会得到这个错误,表示该已经处于连接状态了。

如果程式呼叫()函式的话也会出现这个错误,表示不应该在此时呼叫这个函式。

对于程式,如果已经处于连接状态,程式呼叫()函式的话,也会得到这个错误。

上述错误是发生在上,因为才会建立连接。

对于,多次成功的()函式呼叫是被允许的(对于而言,呼叫()函式的目的不在于建立连接)。

发生此错误的原因是在()函式上,当呼叫()传送时,如果对方位址填入(“”)而填入(在结构中),就会导致这个错误。

()尚未连接

网路函式通常会有一定的呼叫顺序,有些函式必须先呼叫成功某函式才能呼叫。

这个错误发生的原因很明显,就是在连接建立之前,你试图从连接对方取得资料或是传送资料到对方,就会发生这个错误。

举例来说,对于,如果在建立连结前呼叫()试图传送资料,或者是呼叫()试图取得资料,就会发生这个错误,告诉你尚未建立连接。

你如果呼叫了()这个函式试图去取得连接对方的,当然也会出现这个错误。

对于()这个函式,如果设定,但连接已被中断的话,也会出现这个错误。

初学者可能在呼叫()函式之后没有检查是否函式呼叫错误,以致不知道是否连接已正确建立。

()已经关闭

这个错误码的意思是,无法再传送资料了,因为已经经由()函式而关闭了。

当你利用()关闭之后,的协定核心就会关闭这个的传送或接收的功能。

有一点要注意的是,这个错误只会在出现。

()参照()太多,资源耗尽

在作业系统中的解释是指系统核心资源消耗殆尽。

不过在版的规格书中并没有任何一个函式会发生这种错误。

()连接逾时()

当程式试图利用()连接一台远端主机时,此主机一直没有回应,经过了一段时间后,协定核心便会传回()函式这个错误讯息。

发生这个错误的原因可能是程式所要连接的远端主机的系统发生问题,或者根本没有这一台主机。

也有一种可能的原因是本地机器的网路系统出现问题,导致本地主机无法正常与远端主机联系。

检查你的网路系统的设定,看看有什么不当的地方,如闸道器()的设定,主机名称表()内主机名称和网路位址的对照有错误等等。

()连接受拒

连接要求受到对方机器的回绝,无法和对方建立连接。

这个错误并不是网路系统出了问题,而是对方机器的程式拒绝程式的连接要求,或者是根本没有这个程式存在。

当核心收到某个连接要求时,会查看系统中是否有某程式所监听的正好是这个连接要求所要连接的,如果没有此程式,核心会回绝一个给对方程式。

通常发生这个错误的原因有几个。

使用者可能连接到错误的远端主机或是错误的,也有可能是远端主机和对了,但是程式并没有执行。

检查看看程式中的结构有没有填错?

中的位址和是不是以网路位元组顺序排列。

()太多层的符号式链结()

在作业系统中,这个错误的意思是指路径参考过多的符号式链结()。

()档名过长

在作业系统,这个错误的意思是指欲开启档案的路径名称(包括档案名称)太长。

()对方主机关闭

在柏克莱介面的解释中,这个错误发生的原因是当远端主机关闭或系统出问题。

()无法联系对方主机

在柏克莱介面中,这个错误的意思是无法和对方主机取得联系。

在方面,有类似的错误代码,读者可以参考这个错误的说明。

().

.().

()主机网路系统尚未备妥

本地主机的网路系统尚未能正常运作。

若发生这个错误,读者可能要检查一下有没有(或位元版本的)这个档案?

这个档存放的路径正确吗?

()不支援的版本错误发生的原因是在呼叫()函式时所指定的版本不被现有的版本所支援。

若发生这个错误,读者要确定一下本地系统中的版本和该版本所能支援的版本是如何等等。

通常较新的版本同时能支援新旧版本的,建议读者能使用较新的版本。

()未执行()

应用程式没有呼叫()或是呼叫()失败。

应用程式要成功地呼叫()才能使用,否则会有此错误讯息出现。

().

(),().

()

.

()已经证实找不到主机

当你使用网路资料函式寻找主机的资料,而该主机不存在时,就会发生这个错误。

寻找网路主机资料的方法通常是先寻找本地主机的网路名称表(档),如果找不到再透过的途径去找,如果再找不到,通常就会回给函式这样的错误。

发生这样的错误时,检查看看本地主机的主机名称解译的设定有没有问题。

比较可能出现问题的是的设定,确定是不是设定错误的。

如果正确,确定一下有没有跑起来。

你可以利用这个程式看看有没有跑起来,如果没有这个程式,你可以试着去解释一个确定存在的主机,看看有没有在正常运作中。

()找不到网路资料,但未被证实

这是一个暂时性的错误,告诉你目前找不到所要找的网路资料,你可以再试试看。

()无法挽救的错误

对于查询主机名称而言,这个错误发生的原因是由网域名称系统(,)所出现的错误所引起的。

这些错误包括的、和等错误,详细请参考有关网域名称系统的文件。

对于查询服务和协定资料而言,这个错误发生的原因是找不到存放网路资料的资料库。

这个资料库通常是在本地主机上的档案,如和这两个档。

()名称合法,但查无此资料

查询格式是正确的,但是查无此资料存在。

这通常是暂时性的错误,可能在不同的网路资料伺服器中能找到这份资料。

().

'(())'.

()..

.,()

.

().

.

().

..

().

.(.)

().

.

().

.()().

().

..

().

.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2