Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。前面的章节中介绍了Socket的定义,实例,与http的区别,通信,长连接等等技术知识,这里我们来谈谈使用Socket会经常遇到的一些连接错误。

常见的Socket错误如下:

1、出现网络联机错误Socket error #11001

表示您的计算机无法连上服务器,请检查您的Proxy设定以及Proxy相关账号,或暂时取消您防毒软件的「个人防火墙」。

2、出现网络联机错误Socket error #11004

应该是网络联机状态问题,请用户检查网络联机是否正常。

3、出现网络联机错误Socket error #10060 Connection Timed Out

表示您与服务器发生联机逾时错误,请检查您的Proxy相关设定,以及Proxy Server是否已将SSL 443 port打开。

4、出现网络联机错误Socket error #10061

表示服务器忙碌中无法与您建立联机,请稍后再试。

5、出现网络联机错误Socket error #10022

请您上网更新Windows操作系统组件。Windows NT version 4.0的用户请下载安装Service Pack 5(含)以上。

6、出现Internal Server Error

主机忙碌中,请您稍后再试。

7、上传时出现Socket error #10022 Invalid argument.

请上网更新Windows操作系统组件(windows update)。Windows NT version 4.0的用户请下载安装Service Pack 5(含)以上。

8、上传时出现socket error #10054 Connection reset by peer

原因为连接被防火樯或proxy中断"或因为您有安装ip分享器请将ip分享器先拿掉,直接将计算机接adsl的线路后重新上传。

9、上传时出现socket error #10057 Connection reset by peer

是windows的系统文件,与文件传输又关系. 所以你删除了,不能提交命令,网页不能下载,就不能上网

EPIPE和ECONNRESET区别

EPIPE和ECONNRESET是网络编程实践中很常见的错误。二者都是出现send调用出错的时候,可它们有什么区别呢? 简而言之,二者的区别是本端的socket是否收到过对方socket发出的FIN。

其代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

 

static void tcp_reset(struct sock *sk)

{

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;

}

 

smp_wmb();

if (!sock_flag(sk, SOCK_DEAD))

sk->sk_error_report(sk);

tcp_done(sk);

}

 


推荐内容