求助,关于套接字connect错误
没有遇到过你说的这种情况,我一般都是用127.0.0.1测的,你换成UDP试一下嘞?
1、 引言
Linux的兴起可以说是Internet创造的一个奇迹。Linux作为一个完全开放其原代码的的自由软件,兼容了各种UNIX标准(如POSIX、UNIX System V 和 BSD UNIX 等)的多用户、多任务的具有复杂内核的操作系统。在中国,随着Internet的普及,一批主要以高等院校的学生和ISP的技术人员组成的Linux爱好者队伍已经蓬勃成长起来。越来越多的编程爱好者也逐渐酷爱上这个优秀的自由软件。本文介绍了Linux下Socket的基本概念和函数调用。
2、 什么是Socket
Socket(套接字)是通过标准的UNIX文件描述符和其它程序通讯的一个方法。每一个套接字都用一个半相关描述:{协议,本地地址、本地端口}来表示;一个完整的套接字则用一个相关描述:{协议,本地地址、本地端口、远程地址、远程端口},每一个套接字都有一个本地的由操作系统分配的唯一的套接字号。
3、 Socket的三种类型
(1) 流式Socket(SOCK_STREAM)
流式套接字提供可靠的、面向连接的通信流;它使用TCP协议,从而保证了数据传输的正确性和顺序的。
(2) 数据报Socket(SOCK_DGRAM)
数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠、无差错。它使用数据报协议UDP
(3) 原始Socket
原始套接字允许对底层协议如IP或ICMP直接访问,它功能强大但使用较为不便,主要用于一些协议的开发。
4、 利用套接字发送数据
1、 对于流式套接字用系统调用send()来发送数据。
2、 对于数据报套接字,则需要自己先加一个信息头,然后调用sendto()函数把数据发送出去。
5、 Linux中Socket的数据结构
(1) struct sockaddr { //用于存储套接字地址
unsigned short sa_family;//地址类型
char sa_data[14]; //14字节的协议地址
};
(2) struct sockaddr_in{ //in 代表internet
short int sin_family; //internet协议族
unsigned short int sin_port;//端口号,必须是网络字节顺序
struct in_addr sin_addr;//internet地址,必须是网络字节顺序
unsigned char sin_zero;//添0(和struct sockaddr一样大小
};
(3) struct in_addr{
unsigned long s_addr;
};
6、 网络字节顺序及其转换函数
(1) 网络字节顺序
每一台机器内部对变量的字节存储顺序不同,而网络传输的数据是一定要统一顺序的。所以对内部字节表示顺序与网络字节顺序不同的机器,一定要对数据进行转换,从程序的可移植性要求来讲,就算本机的内部字节表示顺序与网络字节顺序相同也应该在传输数据以前先调用数据转换函数,以便程序移植到其它机器上后能正确执行。真正转换还是不转换是由系统函数自己来决定的。
(2) 有关的转换函数
* unsigned short int htons(unsigned short int hostshort):
主机字节顺序转换成网络字节顺序,对无符号短型进行操作4bytes
* unsigned long int htonl(unsigned long int hostlong):
主机字节顺序转换成网络字节顺序,对无符号长型进行操作8bytes
* unsigned short int ntohs(unsigned short int netshort):
网络字节顺序转换成主机字节顺序,对无符号短型进行操作4bytes
* unsigned long int ntohl(unsigned long int netlong):
网络字节顺序转换成主机字节顺序,对无符号长型进行操作8bytes
注:以上函数原型定义在netinet/in.h里
7、 IP地址转换
有三个函数将数字点形式表示的字符串IP地址与32位网络字节顺序的二进制形式的IP地址进行转换
(1) unsigned long int inet_addr(const char * cp):该函数把一个用数字和点表示的IP地址的字符串转换成一个无符号长整型,如:struct sockaddr_in ina
ina.sin_addr.s_addr=inet_addr("202.206.17.101")
该函数成功时:返回转换结果;失败时返回常量INADDR_NONE,该常量=-1,二进制的无符号整数-1相当于255.255.255.255,这是一个广播地址,所以在程序中调用iner_addr()时,一定要人为地对调用失败进行处理。由于该函数不能处理广播地址,所以在程序中应该使用函数inet_aton()。
(2)int inet_aton(const char * cp,struct in_addr * inp):此函数将字符串形式的IP地址转换成二进制形式的IP地址;成功时返回1,否则返回0,转换后的IP地址存储在参数inp中。
(3) char * inet_ntoa(struct in-addr in):将32位二进制形式的IP地址转换为数字点形式的IP地址,结果在函数返回值中返回,返回的是一个指向字符串的指针。
8、 字节处理函数
Socket地址是多字节数据,不是以空字符结尾的,这和C语言中的字符串是不同的。Linux提供了两组函数来处理多字节数据,一组以b(byte)开头,是和BSD系统兼容的函数,另一组以mem(内存)开头,是ANSI C提供的函数。
以b开头的函数有:
(1) void bzero(void * s,int n):将参数s指定的内存的前n个字节设置为0,通常它用来将套接字地址清0。
(2) void bcopy(const void * src,void * dest,int n):从参数src指定的内存区域拷贝指定数目的字节内容到参数dest指定的内存区域。
(3) int bcmp(const void * s1,const void * s2,int n):比较参数s1指定的内存区域和参数s2指定的内存区域的前n个字节内容,如果相同则返回0,否则返回非0。
注:以上函数的原型定义在strings.h中。
以mem开头的函数有:
(1) void * memset(void * s,int c,size_t n):将参数s指定的内存区域的前n个字节设置为参数c的内容。
(2) void * memcpy(void * dest,const void * src,size_t n):功能同bcopy(),区别:函数bcopy()能处理参数src和参数dest所指定的区域有重叠的情况,memcpy()则不能。
(4) int memcmp(const void * s1,const void * s2,size_t n):比较参数s1和参数s2指定区域的前n个字节内容,如果相同则返回0,否则返回非0。
注:以上函数的原型定义在string.h中。
9、 基本套接字函数
(1) socket()
#include
#include
int socket(int domain,int type,int protocol)
参数domain指定要创建的套接字的协议族,可以是如下值:
AF_UNIX //UNIX域协议族,本机的进程间通讯时使用
AF_INET //Internet协议族(TCP/IP)
AF_ISO //ISO协议族
参数type指定套接字类型,可以是如下值:
SOCK_STREAM //流套接字,面向连接的和可靠的通信类型
SOCK_DGRAM //数据报套接字,非面向连接的和不可靠的通信类型
SOCK_RAW //原始套接字,只对Internet协议有效,可以用来直接访问IP协议
参数protocol通常设置成0,表示使用默认协议,如Internet协议族的流套接字使用TCP协议,而数据报套接字使用UDP协议。当套接字是原始套接字类型时,需要指定参数protocol,因为原始套接字对多种协议有效,如ICMP和IGMP等。
Linux系统中创建一个套接字的操作主要是:在内核中创建一个套接字数据结构,然后返回一个套接字描述符标识这个套接字数据结构。这个套接字数据结构包含连接的各种信息,如对方地址、TCP状态以及发送和接收缓冲区等等,TCP协议根据这个套接字数据结构的内容来控制这条连接。
(2) 函数connect()
#include
#include
int connect(int sockfd,struct sockaddr * servaddr,int addrlen)
参数sockfd是函数socket返回的套接字描述符;参数servaddr指定远程服务器的套接字地址,包括服务器的IP地址和端口号;参数addrlen指定这个套接字地址的长度。成功时返回0,否则返回-1,并设置全局变量为以下任何一种错误类型:ETIMEOUT、ECONNREFUSED、EHOSTUNREACH或ENETUNREACH。
在调用函数connect之前,客户机需要指定服务器进程的套接字地址。客户机一般不需要指定自己的套接字地址(IP地址和端口号),系统会自动从1024至5000的端口号范围内为它选择一个未用的端口号,然后以这个端口号和本机的IP地址填充这个套接字地址。
客户机调用函数connect来主动建立连接。这个函数将启动TCP协议的3次握手过程。在建立连接之后或发生错误时函数返回。连接过程可能出现的错误情况有:
(1) 如果客户机TCP协议没有接收到对它的SYN数据段的确认,函数以错误返回,错误类型为ETIMEOUT。通常TCP协议在发送SYN数据段失败之后,会多次发送SYN数据段,在所有的发送都高中失败之后,函数以错误返回。
注:SYN(synchronize)位:请求连接。TCP用这种数据段向对方TCP协议请求建立连接。在这个数据段中,TCP协议将它选择的初始序列号通知对方,并且与对方协议协商最大数据段大小。SYN数据段的序列号为初始序列号,这个SYN数据段能够被确认。当协议接收到对这个数据段的确认之后,建立TCP连接。
(2) 如果远程TCP协议返回一个RST数据段,函数立即以错误返回,错误类型为ECONNREFUSED。当远程机器在SYN数据段指定的目的端口号处没有服务进程在等待连接时,远程机器的TCP协议将发送一个RST数据段,向客户机报告这个错误。客户机的TCP协议在接收到RST数据段后不再继续发送SYN数据段,函数立即以错误返回。
注:RST(reset)位:表示请求重置连接。当TCP协议接收到一个不能处理的数据段时,向对方TCP协议发送这种数据段,表示这个数据段所标识的连接出现了某种错误,请求TCP协议将这个连接清除。有3种情况可能导致TCP协议发送RST数据段:(1)SYN数据段指定的目的端口处没有接收进程在等待;(2)TCP协议想放弃一个已经存在的连接;(3)TCP接收到一个数据段,但是这个数据段所标识的连接不存在。接收到RST数据段的TCP协议立即将这条连接非正常地断开,并向应用程序报告错误。
(3) 如果客户机的SYN数据段导致某个路由器产生“目的地不可到达”类型的ICMP消息,函数以错误返回,错误类型为EHOSTUNREACH或ENETUNREACH。通常TCP协议在接收到这个ICMP消息之后,记录这个消息,然后继续几次发送SYN数据段,在所有的发送都告失败之后,TCP协议检查这个ICMP消息,函数以错误返回。
注:ICMP:Internet 消息控制协议。Internet的运行主要是由Internet的路由器来控制,路由器完成IP数据包的发送和接收,如果发送数据包时发生错误,路由器使用ICMP协议来报告这些错误。ICMP数据包是封装在IP数据包的数据部分中进行传输的,其格式如下:
类型
码
校验和
数据
0 8 16 24 31
类型:指出ICMP数据包的类型。
代码:提供ICMP数据包的进一步信息。
校验和:提供了对整个ICMP数据包内容的校验和。
ICMP数据包主要有以下类型:
(1) 目的地不可到达:A、目的主机未运行;B、目的地址不存在;C、路由表中没有目的地址对应的条目,因而路由器无法找到去往目的主机的路由。
(2) 超时:路由器将接收到的IP数据包的生存时间(TTL)域减1,如果这个域的值变为0,路由器丢弃这个IP数据包,并且发送这种ICMP消息。
(3) 参数出错:当IP数据包中有无效域时发送。
(4) 重定向:将一条新的路径通知主机。
(5) ECHO请求、ECHO回答:这两条消息用语测试目的主机是否可以到达。请求者向目的主机发送ECHO请求ICMP数据包,目的主机在接收到这个ICMP数据包之后,返回ECHO回答ICMP数据包。
(6) 时戳请求、时戳回答:ICMP协议使用这两种消息从其他机器处获得其时钟的当前时间。
调用函数connect的过程中,当客户机TCP协议发送了SYN数据段的确认之后,TCP状态由CLOSED状态转为SYN_SENT状态,在接收到对SYN数据段的确认之后,TCP状态转换成ESTABLISHED状态,函数成功返回。如果调用函数connect失败,应该用close关闭这个套接字描述符,不能再次使用这个套接字描述符来调用函数connect。
注:TCP协议状态转换图:
被动OPEN CLOSE 主动OPEN
(建立TCB) (删除TCB) (建立TCB,
发送SYN)
接收SYN SEND
(发送SYN,ACK) (发送SYN)
接收SYN的ACK(无动作)
接收SYN的ACK 接收SYN,ACK
(无动作) (发送ACK)
CLOSE
(发送FIN) CLOSE 接收FIN
(发送FIN) (发送FIN)
接收FIN
接收FIN的ACK(无动作) (发送ACK) CLOSE(发送FIN)
接收FIN 接收FIN的ACK 接收FIN的ACK
(发送ACK) (无动作) (无动作)
2MSL超时(删除TCB)
(3) 函数bind()
函数bind将本地地址与套接字绑定在一起,其定义如下:
#include
#include
int bind(int sockfd,struct sockaddr * myaddr,int addrlen);
参数sockfd是函数sockt返回的套接字描述符;参数myaddr是本地地址;参数addrlen是套接字地址结构的长度。执行成功时返回0,否则,返回-1,并设置全局变量errno为错误类型EADDRINUSER。
服务器和客户机都可以调用函数bind来绑定套接字地址,但一般是服务器调用函数bind来绑定自己的公认端口号。绑定操作一般有如下几种组合方式:
表1
程序类型
IP地址
端口号
说明
服务器
INADDR_ANY
非零值
指定服务器的公认端口号
服务器
本地IP地址
非零值
指定服务器的IP地址和公认端口号
客户机
INADDR_ANY
非零值
指定客户机的连接端口号
客户机
本地IP地址
非零值
指定客户机的IP地址连接端口号
客户机
本地IP地址
零
指定客户机的IP地址
分别说明如下:
(1) 服务器指定套接字地址的公认端口号,不指定IP地址:即服务器调用bind时,设置套接字的IP地址为特殊的INADDE-ANY,表示它愿意接收来自任何网络设备接口的客户机连接。这是服务器最常用的绑定方式。
(2) 服务器指定套接字地址的公认端口号和IP地址:服务器调用bind时,如果设置套接字的IP地址为某个本地IP地址,这表示这台机器只接收来自对应于这个IP地址的特定网络设备接口的客户机连接。当服务器有多块网卡时,可以用这种方式来限制服务器的接收范围。
(3) 客户机指定套接字地址的连接端口号:一般情况下,客户机调用connect函数时不用指定自己的套接字地址的端口号。系统会自动为它选择一个未用的端口号,并且用本地的IP地址来填充套接字地址中的相应项。但有时客户机需要使用一个特定的端口号(比如保留端口号),而系统不会未客户机自动分配一个保留端口号,所以需要调用函数bind来和一个未用的保留端口号绑定。
(4) 指定客户机的IP地址和连接端口号:表示客户机使用指定的网络设备接口和端口号进行通信。
(5) 指定客户机的IP地址:表示客户机使用指定的网络设备接口和端口号进行通信,系统自动为客户机选一个未用的端口号。一般只有在主机有多个网络设备接口时使用。
我们一般不在客户机上使用固定的客户机端口号,除非是必须使用的情况。在客户机上使用固定的端口号有以下不利:
(1) 服务器执行主动关闭操作:服务器最后进入TIME_WAIT状态。当客户机再次与这个服务器进行连接时,仍使用相同的客户机端口号,于是这个连接与前次连接的套接字对完全一样,但是一呢、为前次连接处于TIME_WAIT状态,并未消失,所以这次连接请求被拒绝,函connect以错误返回,错误类型为ECONNREFUSED
(2) 客户机执行主动关闭操作:客户机最后进入TIME_WAIT状态。当马上再次执行这个客户机程序时,客户机将继续与这个固定客户机端口号绑定,但因为前次连接处于TIME_WAIT状态,并未消失,系统会发现这个端口号仍被占用,所以这次绑定操作失败,函数bind以错误返回,错误类型为EADDRINUSE。
(4) 函数listen()
函数listen将一个套接字转换为征听套接字,定义如下;
#include
int listen(int sockfd,int backlog)
参数sockfd指定要转换的套接字描述符;参数backlog设置请求队列的最大长度;执行成功时返回0, 否则返回-1。函数listen功能有两个:
(1) 将一个尚未连接的主动套接字(函数socket创建的可以用来进行主动连接但不能接受连接请求的套接字)转换成一个被动连接套接字。执行listen之后,服务器的TCP状态由CLOSED转为LISTEN状态。
(2) TCP协议将到达的连接请求队列,函数listen的第二个参数指定这个队列的最大长度。
注:参数backlog的作用:
TCP协议为每一个征听套接字维护两个队列:
(1) 未完成连接队列:每个尚未完成3次握手操作的TCP连接在这个队列中占有一项。TCP希望仪在接收到一个客户机SYN数据段之后,在这个队列中创建一个新条目,然后发送对客户机SYN数据段的确认和自己的SYN数据段(ACK+SYN数据段),等待客户机对自己的SYN数据段的确认。此时,套接字处于SYN_RCVD状态。这个条目将保存在这个队列中,直到客户机返回对SYN数据段的确认或者连接超时。
(2) 完成连接队列:每个已经完成3次握手操作,但尚未被应用程序接收(调用函数accept)的TCP连接在这个队列中占有一项。当一个在未完成连接队列中的连接接收到对SYN数据段的确认之后,完成3次握手操作,TCP协议将它从未完成连接队列移到完成连接队列中。此时,套接字处于ESTABLISHED状态。这个条目将保存在这个队列中,直到应用程序调用函数accept来接收它。
参数backlog指定某个征听套接字的完成连接队列的最大长度,表示这个套接字能够接收的最大数目的未接收连接。如果当一个客户机的SYN数据段到达时,征听套接字的完成队列已经满了,那么TCP协议将忽略这个SYN数据段。对于不能接收的SYN数据段,TCP协议不发送RST数据段,
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *addr, socklen_t len);
返回值:若成功则返回0,出错则返回-1
在connect中所指定的地址是想与之通信的服务器地址。如果sockfd没有绑定到一个地址,connect会给调用者绑定一个默认地址。
当连接一个服务器时,出于一些原因,连接可能失败。要连接的机器必须开启并且正在运行,服务器必须绑定到一个想与之连接的地址,并且在服务器的等待连接队列中应有足够的空间。因此,应用程序必须能够处理connect返回的错误,这些错误可能由一些瞬时变化条件引起。
实例
程序清单16-2显示了一种如何处理瞬时connect错误的方法。这在一个负载很重的服务器上很有可能发生。
#include "apue.h"
#include <sys/socket.h>
#define MAXSLEEP 128
int
connect_retry(int sockfd, const struct sockaddr *addr, socklen_t len)
{
int nsec;
/*
* Try to connect with exponential backoff.
*/
for(nsec = 1; nsec <= MAXSLEEP; nsec <<= 1)
{
if(connect(sockfd, addr, alen) == 0)
{
/*
* Connection accepted.
*/
return(0);
}
/*
* Delay before trying again.
*/
if(nsec <= MAXSEELP/2)
sleep(nsec);
}
return(-1);
如何避免信息沟通环节带来的安全风险
使用SSL(安全套接字层)可以保护传输的数据,以防止在传输过程中的篡改或窃取。2.使用安全通信工具:安全通信工具可以加密和保护信息的传输,如VPN(虚拟私人网络),端到端加密的Messenger,电子邮件加密工具等。3.训练员工进行信息安全意识教育:为员工提供信息安全意识培训,包括安全沟通、识别网络攻击等方面。这有助于提高...
...并完成—下列实验任务:①用干燥的CO气体还原CuO②检验CO还原CuO的气...
试题分析:(1)该实验中,先用浓硫酸 干燥一氧化碳,在还原氧化铜用澄清的石灰水验证二氧化碳气体。故链接顺序是ge,fc,da;(2)实验开始时,要先通入CO气体,后加热,目的是排出玻璃管内的空气,防止加热一氧化碳与空气的混合物引起爆炸;(3) A中澄清石灰水的作用是检验生成的二氧化碳;(4...
这些动漫词汇什么意思啊?OATKU,KUSO,XE
而在OVA、Movie中,"演出"这个职位就比较像"助监督"(副导演),了解导演的意图,协助处理演出工作的细节...所以,有人译为"Co-director".也有人译为"Assistant 接下来的看http:\/\/baike.baidu.com\/view\/4115
汉字的资料
汉字组成的字根空间配置对字义有影响:如同样是“心跟亡”的合体,左右排是“忙”,上下排是“忘”,排列不同,导致不同含义;文字右边有“乂”这个字的部件,这表示右手(手的左偏旁表示左手)持某物对左边字根作某事(金文、甲骨文考古的发现),如果右手上面拿东西就变成“攵”,有这个字根的,几乎都是攻击性或是用...
智力测验简介
1949年美国心理测量学家D.韦克斯勒编制了一套韦氏儿童智力量表,1955年又编制了韦氏成人智力量表,1966年...精神疾病引起的智力衰退的评估;作司法精神病鉴定,并有助于临床诊断;也可用于特种人员的选拔,如飞行员...其中类同以图代词(So);数字符号改为编码(Co),其中一项以图代数字;另加迷津(Ma)以测验预见性、...
无法找到主机“smtp.himeami.co.jp”。请检查输入的服务器名是否正确...
服务器IP为 123.129.254.12 POP3\/SMTP都是这个 自己填上就行了,估计是DNS解不出来
写一篇物理发明小论文,1000字以上
1969年,北京长途电信局安装成功中国第一套全自动长途电话设备。1969年,美国国防部高级研究计划署(ARPA)...于1907年在德国由E.Zwuetysch&Co制造,此款电话的出现可以一定程度解决通话等待时间太长的问题。1907...其双旋转听筒有助于阻止无用的噪音。1914年,Magnavox抗噪音桌式电话B1型同样具有消除噪音的功能。1914...
windows live mail 不能从163、yahoo、qq邮箱发送邮件
0x800CCC0E:根据提供的错误代码分析,主要有以下原因:1、收发邮件服务器地址设置有误或所处网络环境无法解析出服务器的IP地址。建议您在Windows的开始--运行,输入ping 收发邮件服务器地址 -t,将Ping出的IP地址输入客户端软件的相应设置栏中。2、防火墙、邮件检测程序安全级别设置过高,直接中断了数据的...
帮忙看看这些进程是什么
(7)lsass.exe是一个关于微软安全机制的系统进程,主要处理一些特殊的安全机制和登录策略;(8)evteng.exe来自于英特尔evteng模块安装文件,提供对英特尔无线网络硬件上的支持.这不是纯粹的系统程序,但是如果终止它,可能会导致不可知的问题;(9)s24evmon.exe是一个允许访问无线网络接口设备的检测和...
学韩语应该从哪开始学?
学韩国语一开始要从发音开始学,接下来学词汇和语法。韩国语是一种拼音文字,也叫字母音节文字,韩国人...(冠形词)、副词、感叹词、助词、助动词、动词、形容词十大类;韩国语的词汇普遍存在着固有词和汉字词...基础韩语: http:\/\/world.kbs.co.kr\/learn_korean\/lessons\/c_index.htm进阶韩语: http:\/\/world....
曲怨卡马: API给的解释:试图将套接字连接到远程地址和端口时发生错误的情况下,抛出此异常.这些错误通常发生在拒绝远程连接时(例如,没有任何进程在远程地址/端口上进行侦听).
易门县19360579400: 电脑屏幕总是出现[windows socket error:套接字操作尝试连接一个无法连接的主机(10065),on API"connect"] - ?
曲怨卡马: 打开“运行”框,输入“cmd”,回车,打开dos窗口,输入“netsh winsock reset”回车,看提示重启后看还有没有这个错误,如果还有就看开机启动了什么程序,把能关闭的都关闭看是不是运行的某个程序引起的这个错误
易门县19360579400: 小弟在学windows网络编程,在非阻塞套接字时,客户端调用connect函数去访问服务器连不上的问题.求大侠帮忙啊?
曲怨卡马: 你调试是在本机吧,两台机子,输入的IP,要保证这两台电脑本来就能互通,并且防火墙已经放行用到的端口. 如果你直接运行EXE在本机,可能会行的.
易门县19360579400: Windows socket error:您的主机中的软件放弃了一个已建立的连接(10053),on API"connect". - ?
曲怨卡马: Copy to Clipbord 就是已经把信息复制到了“粘贴板” 你在按 CTRL+V可以把信息复制到一个文本编辑区去 SOCKET是计算机之间传递信息常用的连接方式 两端的计算机通过设定好的接口 互相发送 接受数据包 来完成通信 你的电脑会发你的账号密码 命令信息到服务器 服务器会把操作结果返回给你 你可以用360防火墙设置 或者瑞星防火墙设置 把这个端口禁用掉(我猜的) 或者你干脆把那个脑毛病的软件给卸了 重新装一下 一般、就不会在出这样的问题了
易门县19360579400: Socket高手救我,我为什么老是connect失败 - ?
曲怨卡马: 你解析出IP后可以先PING 一下,如果不通那SOCKET肯定也是不行的 如果PING通了,那再检查你的端口是否正确,如果这一点无误,那你就看下SOCK套接字创建有没有问题,是TCP/IP 还是UDP 这几点都确认无误,应该是能连上的? 还有一点,服务端如果做了IP限制,那也是有可能连不上地
易门县19360579400: VNC,由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作(10055),on API connect - ?
曲怨卡马: 这个问题并不直观,并且很难检查.因为,乍一看,它很像普通的死锁,或62616964757a686964616fe78988e69d8331333363393133者内存泄露.假设你已经弄好了你的服务器并且能够很好的运行.当你对服务器进行承受力测试的时候,它...
易门县19360579400: connect 异常怎么解决 - ?
曲怨卡马: 客户端正常连接服务器connect显然不会出现问题.在异常情况下,如果是服务器出现异常,connect能够立即返回失败;但是当客户端出现异常的情况下,分为两种情况:一种是不插网线,客户端没有获得ip地址,在这种情况下,connect也可以立即返回错误;二是但是当客户端插上网线,但是连接网络失败,也就是说能够获取到ip地址,但是和服务器是ping不通的.这种情况下connect就可能会发生阻塞,因为按照《UNIX 网络编程》中讲解,connect的在进行三次握手,如果失败情况,需要等待75s的超市时间的.我们主要讨论第二种情况如何解决,可以让connect快速返回结果,不至于阻塞等待超长的时间.
易门县19360579400: 主机可以打开管家婆但分机显示套接字连接失败 - ?
曲怨卡马: 和数据链接的问题,1从网络上排除网络故障,比如两台机之间的通信是不是通路,有没有互访权限,比如关闭防火墙.2主机上管家婆服务端的数据库服务是否启动.检查库文件是不存在.检查服务程序与数据库间的链接方式是否正确,如OLDB,ODBC,ADBC 等.
易门县19360579400: python 连接mysql 时,connect 出现错误,怎么解决 - ?
曲怨卡马: python 连接mysql 时,connect 出现错误,解决# -*- coding: utf-8 -*- import MySQLdb from MySQLdb.cursors import DictCursor