到主机 的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect

本文介绍如何解决SQL Server 2005远程连接问题,包括检查TCP/IP是否启动、设置正确的动态端口及通过SQL Server外围应用配置器启用TCP/IP和命名管道服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.确定TCP/IP有没有启动.
2.确定TCP/IP动态端口是否正确
3.确定 开始\程序\Microsoft SQL Server 2005\配置工具\SQL Server 外围应用配置器” 在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器” ,然后单击展开“数据库引擎”,选中“远程连接”,在右边选中“本地连接和远程连接”, 再选择要使用的协议,( 这个地方应当启用TCP/IP 和命名管道服务!)设置是否正确

设置方法:
1.打开SQL SERVER CONFIGURATION MANAGER,启动TCP/IP。
2.打开SQL SERVER CONFIGURATION MANAGER (不记得SQLEXPRESS版本有没有这个了, ENTERPRISE版本的有), 左边窗口扩展SQL SERVER 2005 网络配置, 选择SQLEXPRESS 的协议(你的名字不一定是SQLEXPRESS), 右边窗口中双击TCP/IP, 弹出窗口中顶部TAB点"IP 地址", 看IPA11(或者是IPAll..看不出来是1还是l), 里面"TCP 动态端口"的值就是你的端口.你可以直接把这个端口改为1433
3.上面说过了

最后重启所有SQL服务。
你遇到的错误: ``` java.net.ConnectException: Connection refused: connect ``` 是 Java 程序中常见的网络连接异常,表示你的程序尝试连接某个主机(服务器)的某个端口,但目标主机**拒绝了连接请求**。 --- ## 📌 错误含义详解 - `java.net.ConnectException`: 连接异常类。 - `Connection refused`: 表示目标主机没有接受连接。 - `connect`: 表示这个异常发生在连接阶段。 --- ## 🧩 常见原因 | 原因 | 说明 | |------|------| | 1. 目标服务未运行 | 你尝试连接的服务(如 MySQL、SSH、HTTP、自定义服务)没有在目标主机上运行 | | 2. 端口未开放 | 服务虽然运行了,但端口被防火墙、安全组或路由器屏蔽 | | 3. IP 地址或端口错误 | 你连接的地址或端口正确(如 127.0.0.1:8080 写成了 127.0.0.1:8081) | | 4. 网络通 | 本地与目标主机之间的网络通(如局域网隔离、跨网段、公网访问限制) | | 5. 服务配置限制 | 服务绑定了 `127.0.0.1`,只允许本地连接允许远程访问 | | 6. TCP/IP 协议栈问题 | 本地系统 TCP/IP 协议栈异常(较少见) | --- ## 🛠️ 解决方案 ### ✅ 1. 检查目标服务是否运行 比如你连接的是 MySQL,使用以下命令检查: ```bash systemctl status mysql ``` 或者查看进程: ```bash ps aux | grep mysql ``` ### ✅ 2. 检查端口是否监听 使用 `netstat` 或 `ss` 命令查看端口是否被监听: ```bash netstat -tuln | grep 3306 # 或 ss -tuln | grep 3306 ``` ### ✅ 3. 检查防火墙设置 - **Linux 防火墙(firewalld/iptables)** ```bash sudo ufw status sudo firewall-cmd --list-all ``` - **Windows 防火墙**:检查入站规则是否放行对应端口 ### ✅ 4. 检查 IP 地址和端口是否正确 确保你连接的地址和端口与服务配置一致: ```java Socket socket = new Socket("192.168.1.100", 8080); // 确保 IP 和端口正确 ``` ### ✅ 5. 检查服务是否绑定 0.0.0.0 有些服务默认只绑定 `127.0.0.1`,只能本地访问。需要修改配置文件绑定 `0.0.0.0` 才能允许远程连接。 例如 MySQL 的 `bind-address`: ```ini bind-address = 0.0.0.0 ``` ### ✅ 6. 使用 telnet 或 nc 测试连接 ```bash telnet 192.168.1.100 3306 # 或 nc -zv 192.168.1.100 3306 ``` --- ## 🧪 示例代码(Java Socket 连接) ```java import java.io.*; import java.net.*; public class TestConnection { public static void main(String[] args) { String host = "192.168.3.113"; int port = 22; try (Socket socket = new Socket()) { socket.connect(new InetSocketAddress(host, port), 5000); System.out.println("连接成功!"); } catch (java.net.ConnectException e) { System.err.println("连接失败: " + e.getMessage()); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } ``` > 上述代码尝试连接 `192.168.3.113:22`,如果失败会抛出 `ConnectException`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值