与主机 server.com/Db_name、端口 1433 的 TCP/IP 连接失败

Posted

技术标签:

【中文标题】与主机 server.com/Db_name、端口 1433 的 TCP/IP 连接失败【英文标题】:The TCP/IP connection to host server.com/Db_name, port 1433 has failed 【发布时间】:2013-03-08 07:45:25 【问题描述】:

这个问题可能是一个基本问题,如果是,请原谅我。我正在尝试将我的 android 应用程序连接到 MSSQL Server。我在下面链接的问题中使用了相同的代码。我根据此链接中选择的答案使用了 sqljdbc 4.3.0:

com.mysql.jdbc.driver class not found exception

当我这样做时,它调试成功,但是当我在我的设备上运行它时,三星 Galaxy Y(姜饼)它给了我这个错误:

com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host server.com/Db_name, port 1433 has failed. Error: "null. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".

任何帮助将不胜感激。

编辑:我在模拟器上运行它,它在文本视图中给出了这个错误。

android.os.NetworkOnMainThreadException

【问题讨论】:

【参考方案1】:

你遇到了这个异常:

com.microsoft.sqlserver.jdbc.SQLServerException:The connection to the 
          host server.com, named instance Db_name has failed. 
Error:"Java.net.SocketTimeoutException". Verify the server and the instance names, 
          check that no firewall is blocking UDP traffic to port 1434, and for 
          SQL Server 2005 or later verify that the SQL Server Browser Service 
          is running on the host.

基本上,你需要按照异常消息所说的去做:

    检查您使用的服务器主机名是否正确。 (真的是“server.com”吗?) 检查您使用的实例名称是否正确。 (真的是“Db_name”吗?) 检查是否有防火墙阻止您从设备访问 UDP 端口 1434。 检查 SQL Server 浏览器服务是否在“server.com”(或其他任何实际位置)上运行。

在您的设备上尝试其他几件事:

检查您是否可以对“server.com”(或其他)进行 DNS 查找 检查您是否可以“ping”“server.com”主机(或其他)

基本上,有许多可能是错误的,您需要有条不紊地消除它们,直到找到问题的真正原因。我们无法为您做到这一点。


我在模拟器上运行它,它在文本视图中给出了这个错误。

   android.os.NetworkOnMainThreadException

这是一个不同的问题。

javadoc 是这样说的:

“当应用程序尝试在其主线程上执行网络操作时引发的异常。

这仅适用于面向 Honeycomb SDK 或更高版本的应用程序。允许以早期 SDK 版本为目标的应用程序在其主事件循环线程上进行网络连接,但非常不鼓励这样做。参见文档Designing for Responsiveness。”

简而言之,您不应该在主事件线程上执行网络操作(包括与平台外数据库通信)......因为这可能会导致 UI 长时间锁定。

【讨论】:

我已经通过使用异步类(使用另一个线程)解决了第二个问题,但是套接字超时异常仍然存在:( 如何检查 3? UDP 端口的事?【参考方案2】:

您的网址有问题,请使用以下网址格式:

jdbc:sqlserver://server.com\\Db_name;

【讨论】:

照你说的做,我现在明白了。 com.microsoft.sqlserver.jdbc.SQLServerException:连接到主机 server.com,命名实例 Db_name 失败。错误:“Java.net.SocketTimeoutException”。验证服务器和实例名称,检查是否没有防火墙阻止到端口 1434 的 UDP 流量,对于 SQL Server 2005 或更高版本,验证 SQL Server Browser 服务是否正在主机上运行。我正在使用 SQL Server 2005。 看这个问题:***.com/questions/8911376/…

以上是关于与主机 server.com/Db_name、端口 1433 的 TCP/IP 连接失败的主要内容,如果未能解决你的问题,请参考以下文章

3.2 主机探测与端口扫描

与主机 localhost、端口 1433 的 TCP/IP 连接失败

无法在端口 1433 上打开与主机的连接:连接失败

端口扫描

Apache与PHP的结合使主机访问linux80端口的方法

扫描与爆破