您现在的位置: 365建站网 > 365学习 > 常见的socket error 出错总结和socket 错误详解及处理方法

常见的socket error 出错总结和socket 错误详解及处理方法

文章来源:365jz.com     点击数:1687    更新时间:2018-01-07 09:53   参与评论

常见错误
       
            ECONNREFUSED(111):   没有这个端口
            EAGAIN(11):                      buff已满
            EPIPE(32):                        客户端断掉了
            ECONNRESET(104):   客户端先可以正常连接服务端,并可以进行数据收发,
                                                       但当客户端突然掉电,即没有正常的关掉网络资源,
                                                       重启后,客户端还是可以连接服务端,但是发送(send函数)数据给服务端时,
                                                       send函数返回-1,捕捉errno为104,即ECONNRESET。
            ENOBUFS(105):                 例如:使用udp发送>=128K的消息会报ENOBUFS的错误

EPIPE和ECONNRESET区别
EPIPE和ECONNRESET是网络编程实践中很常见的错误。二者都是出现send调用出错的时候,可它们有什么区别呢? 简而言之,二者的区别是本端的socket是否收到过对方socket发出的FIN。
   
/* When we get a reset we do this. */
static void tcp_reset(struct sock *sk)
{
        /* We want the right error as BSD sees it (and indeed as we do). */
        switch (sk->sk_state) {
        case TCP_SYN_SENT:
                sk->sk_err = ECONNREFUSED;
                break;
        case TCP_CLOSE_WAIT:
                sk->sk_err = EPIPE;
                break;
        case TCP_CLOSE:
                return;
        default:
                sk->sk_err = ECONNRESET;
        }
        /* This barrier is coupled with smp_rmb() in tcp_poll() */
        smp_wmb();

        if (!sock_flag(sk, SOCK_DEAD))
                sk->sk_error_report(sk);

        tcp_done(sk);
}
附录

 1 #define EPERM 1    // Operation not permitted 操作不允许
  2 #define ENOENT 2  // No such file or directory 文件/路径不存在
  3 #define ESRCH 3    // No such process 进程不存在
  4 #define EINTR 4    //  Interrupted system call 中断的系统调用
  5 #define EIO 5 // I/O error I/O错误
  6 #define ENXIO 6 // No such device or address 设备/地址不存在
  7 #define E2BIG 7 // Arg list too long 参数列表过长
  8 #define ENOEXEC 8 // Exec format error 执行格式错误
  9 #define EBADF 9 // Bad file number 错误文件编号
10 #define ECHILD 10 // No child processes 子进程不存在
11 #define EAGAIN 11 // Try again 重试
12 #define ENOMEM 12 // Out of memory 内存不足
13 #define EACCES 13 // Permission denied 无权限
14 #define EFAULT 14 // Bad address 地址错误
15 #define ENOTBLK 15 // Block device required 需要块设备
16 #define EBUSY 16 // Device or resource busy 设备或资源忙
17 #define EEXIST 17 // File exists 文件已存在
18 #define EXDEV 18 // Cross-device link 跨设备链路
19 #define ENODEV 19 // No such device 设备不存在
20 #define ENOTDIR 20 // Not a directory 路径不存在
21 #define EISDIR 21 // Is a directory 是路径
22 #define EINVAL 22 // Invalid argument 无效参数
23 #define ENFILE 23 // File table overflow 文件表溢出
24 #define EMFILE 24 // Too many open files 打开的文件过多
25 #define ENOTTY 25 // Not a typewriter 非打字机
26 #define ETXTBSY 26 // Text file busy 文本文件忙
27 #define EFBIG 27 // File too large 文件太大
28 #define ENOSPC 28 // No space left on device 设备无空间
29 #define ESPIPE 29 // Illegal seek 非法查询
30 #define EROFS 30 // Read-only file system 只读文件系统
31 #define EMLINK 31 // Too many links 链接太多
32 #define EPIPE 32 // Broken pipe 管道破裂
33 #define EDOM 33 // Math argument out of domain of func 参数超出函数域
34 #define ERANGE 34 // Math result not representable 结果无法表示
35 #define EDEADLK 35 // Resource deadlock would occur 资源将发生死锁
36 #define ENAMETOOLONG 36 // File name too long 文件名太长
37 #define ENOLCK 37 // No record locks available 没有可用的记录锁
38 #define ENOSYS 38 // Function not implemented 函数未实现
39 #define ENOTEMPTY 39 // Directory not empty 目录非空
40 #define ELOOP 40 // Too many symbolic links encountered 遇到太多符号链接
41 #define EWOULDBLOCK EAGAIN // Operation would block 操作会阻塞
42 #define ENOMSG 42 // No message of desired type 没有符合需求类型的消息
43 #define EIDRM 43 // Identifier removed 标识符已删除
44 #define ECHRNG 44 // Channel number out of range 通道编号超出范围
45 #define EL2NSYNC 45 // Level 2 not synchronized level2不同步
46 #define EL3HLT 46 // Level 3 halted 3级停止
47 #define EL3RST 47 // Level 3 reset 3级重置
48 #define ELNRNG 48 // Link number out of range 链接编号超出范围
49 #define EUNATCH 49 // Protocol driver not attached 协议驱动程序没有连接
50 #define ENOCSI 50 // No CSI structure available 没有可用的CSI结构
51 #define EL2HLT 51 // Level 2 halted 2级停止
52 #define EBADE 52 // Invalid exchange 无效交换
53 #define EBADR 53 // Invalid request descriptor 无效请求描述
54 #define EXFULL 54 // Exchange full 交换完全
55 #define ENOANO 55 // No anode 无阳极
56 #define EBADRQC 56 // Invalid request code 无效请求码
57 #define EBADSLT 57 // Invalid slot 无效插槽
58 #define EDEADLOCK EDEADLK
59 #define EBFONT 59 // Bad font file format 错误的字体文件格式
60 #define ENOSTR 60 // Device not a stream 设备不是流
61 #define ENODATA 61 // No data available 无数据
62 #define ETIME 62 // Timer expired 计时器到期
63 #define ENOSR 63 // Out of streams resources 流资源不足
64 #define ENONET 64 // Machine is not on the network 机器不在网络上
65 #define ENOPKG 65 // Package not installed 包未安装
66 #define EREMOTE 66 // Object is remote 对象是远程
67 #define ENOLINK 67 // Link has been severed 链接正在服务中
68 #define EADV 68 // Advertise error 广告错误
69 #define ESRMNT 69 // Srmount error ?
70 #define ECOMM 70 // Communication error on send 发送过程中通讯错误
71 #define EPROTO 71 // Protocol error 协议错误
72 #define EMULTIHOP 72 // Multihop attempted 多跳尝试
73 #define EDOTDOT 73 // RFS specific error RFS特定错误
74 #define EBADMSG 74 // Not a data message 不是数据类型消息
75 #define EOVERFLOW 75 // Value too large for defined data type 对指定的数据类型来说值太大
76 #define ENOTUNIQ 76 // Name not unique on network 网络上名字不唯一
77 #define EBADFD 77 // File descriptor in bad state 文件描述符状态错误
78 #define EREMCHG 78 // Remote address changed 远程地址改变
79 #define ELIBACC 79 // Can not access a needed shared library 无法访问需要的共享库
80 #define ELIBBAD 80 // Accessing a corrupted shared library 访问损坏的共享库
81 #define ELIBSCN 81 // .lib section in a.out corrupted 库部分在a.out损坏
82 #define ELIBMAX 82 // Attempting to link in too many shared libraries 试图链接太多的共享库
83 #define ELIBEXEC 83 // Cannot exec a shared library directly 不能直接运行共享库
84 #define EILSEQ 84 // Illegal byte sequence 非法字节序
85 #define ERESTART 85 // Interrupted system call should be restarted 应重新启动被中断的系统调用
86 #define ESTRPIPE 86 // Streams pipe error 流管错误
87 #define EUSERS 87 // Too many users 用户太多
88 #define ENOTSOCK 88 // Socket operation on non-socket 在非套接字上进行套接字操作
89 #define EDESTADDRREQ 89 // Destination address required 需要目的地址
90 #define EMSGSIZE 90 // Message too long 消息太长
91 #define EPROTOTYPE 91 // Protocol wrong type for socket 错误协议类型
92 #define ENOPROTOOPT 92 // Protocol not available 协议不可用
93 #define EPROTONOSUPPORT 93 // Protocol not supported 不支持协议
94 #define ESOCKTNOSUPPORT 94 // Socket type not supported 不支持套接字类型
95 #define EOPNOTSUPP 95 // Operation not supported on transport endpoint 操作上不支持传输端点
96 #define EPFNOSUPPORT 96 // Protocol family not supported 不支持协议族
97 #define EAFNOSUPPORT 97 // Address family not supported by protocol 协议不支持地址群
98 #define EADDRINUSE 98 // Address already in use 地址已被使用
99 #define EADDRNOTAVAIL 99 // Cannot assign requested address 无法分配请求的地址
100 #define ENETDOWN 100 // Network is down 网络已关闭
101 #define ENETUNREACH 101 // Network is unreachable 网络不可达
102 #define ENETRESET 102 // Network dropped connection because of reset 网络由于复位断开连接
103 #define ECONNABORTED 103 // Software caused connection abort 软件导致连接终止
104 #define ECONNRESET 104 // Connection reset by peer 连接被对方复位
105 #define ENOBUFS 105 // No buffer space available 没有可用的缓存空间
106 #define EISCONN 106 // Transport endpoint is already connected 传输端点已连接
107 #define ENOTCONN 107 // Transport endpoint is not connected 传输端点未连接
108 #define ESHUTDOWN 108 // Cannot send after transport endpoint shutdown 传输端点关闭后不能在发送
109 #define ETOOMANYREFS 109 // Too many references: cannot splice 太多的引用:无法接合
110 #define ETIMEDOUT 110 // Connection timed out 连接超时
111 #define ECONNREFUSED 111 // Connection refused 连接被拒绝
112 #define EHOSTDOWN 112 // Host is down 主机已关闭
113 #define EHOSTUNREACH 113 // No route to host 无法路由到主机
114 #define EALREADY 114 // Operation already in progress 操作已在进程中
115 #define EINPROGRESS 115 // Operation now in progress 进程中正在进行的操作
116 #define ESTALE 116 // Stale NFS file handle
117 #define EUCLEAN 117 // Structure needs cleaning
118 #define ENOTNAM 118 // Not a XENIX named type file
119 #define ENAVAIL 119 // No XENIX semaphores available
120 #define EISNAM 120 // Is a named type file
121 #define EREMOTEIO 121 // Remote I/O error
122 #define EDQUOT 122 // Quota exceeded
123 #define ENOMEDIUM 123 // No medium found
124 #define EMEDIUMTYPE 124 // Wrong medium type 



出现网络联机错误Socket error #11001
  表示您的计算机无法连上服务器,请检查您的Proxy设定以及Proxy相关账号,或暂时取消您防毒软件的「个人防火墙」。
  · 出现网络联机错误Socket error #11004
  应该是网络联机状态问题,请用户检查网络联机是否正常。
  · 出现网络联机错误Socket error #10060 Connection Timed Out
  表示您与服务器发生联机逾时错误,请检查您的Proxy相关设定,以及Proxy Server是否已将SSL 443 port打开。
  · 出现网络联机错误Socket error #10061
  表示服务器忙碌中无法与您建立联机,请稍后再试。
  · 出现网络联机错误Socket error #10022
  请您上网更新Windows操作系统组件。Windows NT version 4.0的用户请下载安装 Service Pack 5(含)以上。
  · 出现Internal Server Error
  主机忙碌中,请您稍后再试。
  · 上传时出现Socket error #10022 Invalid argument.
  请上网更新Windows操作系统组件(windows update)。Windows NT version 4.0的用户请下载安装 Service Pack 5(含)以上。
  · 上传时出现socket error #10054 Connection reset by peer
  原因为连接被防火樯或proxy中断"或因为您有安装ip分享器请将ip分享器先拿掉,直接将计算机接adsl的线路后重新上传。
  · 上传时出现socket error #10057 Connection reset by peer
  是windows的系统文件,与文件传输又关系. 所以你删除了,不能提交命令,网页不能下载,就不能上网咯
  一些程序经常会劫持IE、修改winsock,我们可以清除他们但是后果是上不去网了。很多软件都可以修复winsock,但是设想一下这种情况,如果你正好手边没有软件,而且也上不去网,你会怎么办。有人就说了,拿U盘去别的地方下啊。其实不必那么麻烦,windows xp已经自己带了修复自己的工具,那就是netsh。下次如果在删除病毒程序后上不去网了,直接在运行里键入netsh winsock reset

Q.为什么下载到99%会速度会减慢甚至会暂停一段时间
A.下载接近完成的时候一般只剩下一两个连接,由于其他连接的关闭,导致下载速度较慢,如果这一两个连接再出现连接和下载线路不通畅,就会导致长时间的停顿,在快车中已就该情况进行了一些特殊处理,不过有时依然会有问题,可以设置超时时间为一个较小的值,可以改进一些,不过对正常的下载又有一些影响。最好不要理它,等一段时间就会下载完成。如果着急,可以手动停止再启动。

Q.下载后的文件无法打开,提示“没有关联的程序”或者提示要用打开方式
A.有三种可能性: 
1.由于一些网站的限制或者用户提交给快车下载的地址的错误,快车不能正确下载文件,只是下载了一些页面文件,有时这些页面是服务器动态生成的,文件后缀为PHP,asp等等,请参照常见问题解答中的相关问题答案确保快车可以下载到正确的文件 
2.没有安装处理下载的文件的相关程序,比如后缀为zip的文件,需要安装解压缩程序(WinZip等) 
3.快车会给未下载完成的文件添加.jc!的后缀,下载完成后会去掉该后缀,可能由于一些特殊的情况(安装了某些实时病毒 监测软件)造成无法自动完成该工作,请手动去掉已下载文件的.jc!后缀。另外在选项/常规中去掉设置"添加后缀jc!直到 文件下载完成"以后就不会有该问题。

Q.为何已经下载完的任务仍留在“正在下载”类别中,而并没有自动移动到“已下载”类别中
A.请在菜单/工具/默认下载属性中修改类别属性为"已下载",以后添加的任务下载完毕后会自动移动到“已下载”类别,当前已下载完毕而仍在“正在下载”类别中的任务可以托拽到“已下载”类别中。

Q.提示"Socket Error 100xx"
A.如果所有的站点均是如此,请确保你与Internet的连接没有问题(如果使用代理服务器请确保在快车中设置的正确,如果使用了防火墙也需要在防火墙软件中设置允许快车访问因特网,具体需要参阅防火墙软件的帮助文件),另外也有可能是由于创建了过多的连接导致的,请不要同时下载太多的文件。如果只是个别站点如此,应该是该站点临时有点问题或者根本无法连接该站点(比如国内封掉了某些IP),请过些时候再试。

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (1687人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------