Java 如何从jdbc连接中了解客户端ip端口
我正在测试MSSQL。“如何延长连接后创建的会话信息的时间?” 因此,尝试连接MSSQL JDBC,然后选择sys.dm_exec_会话和sys.dm_exec_与客户端Ip和端口的连接 但是,我不知道如何从JDBC连接获取客户端Ip和端口 或者可以使用套接字创建JDBC连接吗 显示我的测试代码Java 如何从jdbc连接中了解客户端ip端口,java,sql-server,jdbc,connection,Java,Sql Server,Jdbc,Connection,我正在测试MSSQL。“如何延长连接后创建的会话信息的时间?” 因此,尝试连接MSSQL JDBC,然后选择sys.dm_exec_会话和sys.dm_exec_与客户端Ip和端口的连接 但是,我不知道如何从JDBC连接获取客户端Ip和端口 或者可以使用套接字创建JDBC连接吗 显示我的测试代码 try { DriverManager.registerDriver( new com.microsoft.sqlserver.jdbc.SQLServe
try {
DriverManager.registerDriver(
new com.microsoft.sqlserver.jdbc.SQLServerDriver());
DriverManager.setLoginTimeout(10);
} catch (Exception ex) {
System.out.println("Fail to register sqlserver driver.");
return;
}
String url = "jdbc:sqlserver://";
String ip = "10.1.1.1";
String port = "1433";
String catalog = "master";
String user = "jtlee";
String pwd = "123456789";
url = url + ip + ":" + port + ";databasename=" + catalog;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
long startTime = System.nanoTime();
conn = DriverManager.getConnection(url, user, pwd);
pstmt = conn.prepareStatement(
"SELECT "
+ " count(*) "
+ "FROM "
+ " sys.dm_exec_connections connections,"
+ " sys.dm_exec_sessions sessions "
+ "WHERE "
+ " connections.session_id = sessions.session_id "
+ " and connections.client_net_address= ? "
+ " and connections.client_tcp_port= ? ");
/* I need this information... */
String clientIp;
int clientPort;
pstmt.setString(1, clientIp);
pstmt.setInt(2, clientPort);
rs = pstmt.executeQuery();
if (rs.next()) {
...
感谢您阅读我的奇怪英语。如果您想获取活动连接的IP和端口,您可以使用
查询sys.dm_exec_connections
,其中session\u id=@@SPID,例如
sql=
“选择客户端\u网络\u地址、客户端\u tcp\u端口、本地\u网络\u地址、本地\u tcp\u端口”+
“来自sys.dm_exec_connections”+
“其中会话_id=@@SPID”;
试一试(
语句st=conn.createStatement();
结果集rs=st.executeQuery(sql)){
while(rs.next()){
System.out.printf(“连接在服务器上的%s:%d和作为客户端的%s:%d之间。%n”,
rs.getString(“本地网络地址”),
rs.getInt(“本地\u tcp\u端口”),
rs.getString(“客户网络地址”),
rs.getInt(“客户端\u tcp\u端口”)
);
}
}
生产
连接在服务器上的192.168.1.12:1433和作为客户端的192.168.1.101:49744之间。