Socket连接出错总结

DM数据库连接故障排查:Socket连接失败的五大常见原因及解决方案 本文针对DM数据库连接时常见的Socket连接失败问题,系统梳理了五大核心原因与解决方案。从端口配置、数据库服务状态、防火墙与网络策略、DMAP辅助服务,到网络连通性与客户端配置,提供了详细的排查步骤与实用命令,帮助用户快速定位并解决连接故障,确保数据库访问顺畅。 阅读详情
下面7种情况是我认为最容易出现的TCP/IP连接错误。


[1] kill pid/应用崩溃/正常关机

    这几种情况下操作系统会正常将连接关闭,主动发送FIN完成4次分组交换


[2] 操作系统崩溃/机器断电
    两种情况
    1 如本端不再启动则不会有任何响应到对端,对端会执行[6]的超时重传重过程

    2 如果机器后来又启动了,则会在对端写时返回RST给对方,因为原来的端口已经不存在


[3] 拔掉网线

    由于物理线路断开,等效于[2],本端没任何响应,对端会执行[6]的超时重传过程


[4] 服务端的listen接收队列满

    客户端再调用connect,服务器将不做任何回应,因为这种情况是暂时的,很可能在短时间内解决,客户端会执行[6]重新发送SYN


[5] RST
    当socket的一端认为对方对一个不存在的4元组发来了请求的时候,会回复一个RST响应,在epoll上会响应为EPOLLHUP事件,目前我已知的两种情况会发送RST
    1 客户端connect到一个没有在listen的端口

    2 连接已经建立好后,客户端意外断电后重启,客户端端口已经不在使用,但是服务器直接在原来的socket上发送数据。


[6] 超时重传

    如果一端无任何响应,另一端会按照下面的时间序列重发请求(秒),|1.5|3|6|12|24|48|64|64|...|9分钟|,9分钟后会发送给对方一个RST分组,然后本端返回。


[7] connect出错
    两种情况
    1 connect到一个没有在listen的端口,收到RST回应
    2 connect到的ip不能定位到一台机器,或者说发出去的请求无任何响应,这时会执行[6],connect会不断重试,然后因为9分钟后收到RST分组而返回-1
socket编程中的connect连接失败是什么问题? 远程主机不可达:连接失败最常见的原因之一是远程主机不可达。如果连接失败并且确定网络配置正确,那么可能需要检查远程主机是否正常工作。总结:在socket编程中,connect连接失败可能是由于远程主机不可达、网络防火墙设置或IP地址、端口配置错误等原因引起的。IP地址或端口错误:在连接远程主机时,需要指定正确的目标IP地址和端口号。"的消息,否则将输出相应的错误信息,帮助确定连接失败的原因。网络防火墙:网络中的防火墙可能会阻止连接的建立。因此,在连接远程主机之前,应该确保防火墙允许出站连接请求。 阅读详情

相关推荐

socket连接错误及原因

Socket 错误指的是在使用 Socket 进行网络通信时,由于各种原因而导致的错误。Socket 是一种网络编程接口,它允许应用程序通过 TCP/IP 协议或 UDP 协议进行网络通信。在进行网络通信时,可能会出现各种各样的错误,例如连接超时、连接被重置、无法连接等等,这些错误都被称为 Socket 错误。当出现 Socket 错误时,通常需要根据具体的错误信息进行调试和处理,例如修改网络配置、增加连接超时时间、检查网络连接等等。正确地处理 Socket 错误可以有效提高网络通信的稳定性和可靠性。

关注我!带你一路 "狂飙" 到底! 2万+

socket连接问题

socket连接注意

weixin_51375916的博客 2191

Socket(服务器端)通信连接失败解决方法

1.问题描述 使用树莓派4B实现与PC端的Socket通信。树莓派作为服务器端,PC机作为客户端。在树莓派上运行服务器代码,相关端口打开,但PC端总连接不上。 2.解决方法 树莓派服务器端代码使用python实现,参考了俩本书籍《树莓派Python编程指南》和《树莓派Python编程入门与实战》。 来自《《树莓派Python编程指南》的服务器端代码实例 以下是来自《树莓派Python编程入门与实...

qq_41861711的博客 1万+

Android Socket连接PC出错问题及解决

最近测试问题:Android 通过Socket链接电脑,ip和端口都是正确的,也在同一网段,可android端就是报异常如下: 解决办法:测试电脑的防火墙可能开着,在控制面板把防火墙打开即可。 转载于:https://www.cnblogs.com/yunfang/p/5896421.html...

weixin_30485379的博客 196

socket连接成功,关闭后,再连接出错解决方案

一般情况下,当服务端先于客户端关闭时,由于操作系统释放端口需要一定的时间,端口号可能还未来得及完全释放,这便会导致下次运行程序时出现报错情况。在某些特定情形下,尤其是在连接刚刚关闭后便立即尝试重新进行连接操作时,端口极有可能仍被标识为处于 TIME_WAIT 状态,而这种状态通常会出现在主动关闭连接的一方。一、每次关闭时先关闭客户端,再关闭服务端。然后根据得到的进程号(PID)杀死进程。

tm1560000的博客 1547

虚拟机和主机使用socket连接出错

最后发现是因为服务端的代码中,socket绑定的主机我写的是“127.0.0.1”,是不行的。应直接填写虚拟机的IP。“[WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。“[WinError 10061] 由于目标计算机积极拒绝,无法连接。的问题,检查代码没有问题,虚拟机的防火墙也关闭了。主机位客户端,虚拟机为服务端,一直出现。

gftydc的博客 490

C#使用Socket建立连接、通信,主动发送Close关闭, 随后进行下一次的连接,此时会出错,通信端口被占用

当你关闭一个Socket连接后,操作系统会在一段时间内保持该端口处于TIME_WAIT状态。在这个状态下,该端口是不可用的,直到TIME_WAIT状态结束。这是为了确保之前的连接的所有数据都已经被处理完毕。

qq_44618510的博客 2087

JAVA 连接SQL server2000时出错Error establishing socket

JAVA 连接SQL server2000时出错Error establishing socket  JAVA 采用JDBC连接数据库出现异常如下:java.sql. SQLException:{Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.--- SQLException cau

Andes Home 千年的塔 -十年技术,风雨兼程 1516

android Socket连接出错:android.system.ErrnoException: connect failed: ECONNREFUSED Connection refuse

Android端做Socket连接测试 , 报错:提示说连接被拒绝. java.net.ConnectException: failed to connect to /192.168.0.101 (port 8081): connect failed: ECONNREFUSED (Connection refused) Android长连接项目,运行到真实手机上,手机的iP是:192...

LlanyW的专栏 5858

flashfxp4.3连接出错,数据Socket错误: 连接超时,列表错误。

以版本flashfxp 4.3为例 设置主动被动无果,如图设置列表命令为SATA-l可以解决

lyz99952042的博客 7350

Socket中如何设置连接超时

1. create socket struct sockaddr_in addr; addr.sin_family = AF_INET; // Server address addr.sin_addr.s_addr = inet_addr(host); // Server port addr.sin_port = htons(port); // Creating socket if ((soc =

johnywy的专栏 1733

Mysql 连接数据库出错Can‘t connect to local MySQL server through socket

ForeverGest的博客 791

JSP连接Microsoft SQL Server出错:Error establishing socket解决方法

安装SQL Server的补丁即可。安装的时候需要注意:第一次的安装只是解压缩,解压缩之后的目录下有setup,需要点击安装,这个才是真正的安装。 

李绪成的一亩三分地 2286

android兼容 -- socket通信--接口在某个手机可正常访问但是连接出错

拿登录接口举例 我平时测试用的手机 android4.4 华为荣耀6plus 可正常登录 今天用同事的手机 android5.0 vivo X5pro android5.0 正确输入用户名,密码,显示用户名和密码不匹配   1.断点调试和打印发现,获取的信息都是正确的 2.为了防止空格误导,已经使用了trim() 3.最后没办法了,直接在代码里面把账号密码写上去,还是显示用户名和密

qifang2969的博客 681

83998 连接服务器出错_从0实现基于Linux socket聊天室多线程服务器模型1

前言Socket在实际系统程序开发当中,应用非常广泛,也非常重要。实际应用中服务器经常需要支持多个客户端连接,实现高并发服务器模型显得尤为重要。高并发服务器从简单的循环服务器模型处理少量网络并发请求,演进到解决C10K,C10M问题的高并发服务器模型。本文通过一个简单的多线程模型,带领大家学习如何自己实现一个简单的并发服务器。C/S架构服务器-客户机,即Client-Server(C/S...

weixin_39676930的博客 112
上一篇: 从epoll构建muduo-10 Timer定时器
下一篇: 你真的了解find命令吗
voidccc
博客等级 码龄14年 149粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值