[.NET] socket connect with timeout

 

这个范例示范了如何让 Socket 连线超时.

### Java 应用程序连接到 `master:9820` 服务时遇到的连接被拒绝问题 当应用程序尝试通过网络建立连接并收到 `java.net.ConnectException: 拒绝连接` 错误时,通常意味着目标主机上的指定端口未监听或防火墙阻止了该请求。对于特定于 Hadoop 的情况,错误可能源于多个方面。 #### 网络配置验证 确认客户端和服务端之间的网络连通性至关重要。确保 IP 地址和主机名解析无误,在 `/etc/hosts` 文件中正确设置 master 节点的相关条目[^3]: ```bash 192.168.x.x master.example.com master ``` 其中 `192.168.x.x` 是实际使用的 IP 地址。 #### 服务状态检查 核实目标机器上运行的服务是否已启动并且正在侦听预期端口 (此处为 9820),可利用命令行工具如 netstat 或 ss 进行检测: ```bash sudo netstat -tulnp | grep 9820 # 或者使用ss替代netstat sudo ss -tulnp | grep 9820 ``` 如果没有任何输出,则表明相应服务尚未启动或者配置有误[^1]。 #### 防火墙规则调整 考虑到安全策略,默认情况下某些操作系统可能会启用防火墙从而阻挡外部访问。因此需要适当放宽入站流量控制以允许合法通信发生。例如,在 CentOS/RHEL 上可以通过 firewalld 添加例外项: ```bash sudo firewall-cmd --zone=public --add-port=9820/tcp --permanent sudo systemctl reload firewalld.service ``` 此外还需排查 SELinux 设置是否会干扰正常操作;必要时临时禁用测试效果(`setenforce 0`),但不建议长期如此做。 #### 客户端代码审查 最后不要忽略对发起调用一方源码逻辑的审视——特别是涉及硬编码地址的部分以及超时参数设定等细节之处。确保所给定的目标位置准确无误,并且合理设置了重试机制来应对瞬态故障场景[^2]。 ```python import socket def check_connection(host='master', port=9820, timeout=5): try: with socket.create_connection((host, port), timeout) as sock: print(f"Successfully connected to {host}:{port}") except Exception as e: print(f"Failed to connect to {host}:{port}, error={str(e)}") check_connection() ``` 上述 Python 函数可用于快速诊断能否成功抵达目的节点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值