【发布时间】:2016-03-31 23:44:19
【问题描述】:
我想知道 oracle DB 是否正在使用 c# 代码侦听指定远程计算机上的端口 1521(或者可能是另一个指定端口)。像 nmap 这样的工具能够做到这一点 - 不幸的是,我不能使用 nmap / 这样的工具,必须在代码中构建。
我尝试使用 Process.GetProcesses() 方法 - 但它没有给出端口号。所以这对我不起作用。
非常感谢您对此提供的任何帮助。
【问题讨论】:
-
这看起来像是一个 XY 问题。你为什么要这样做?是否确定请求的数据库可用?然后只需使用 DB 代码连接到它,因为侦听某个点的进程并不能保证您的应用程序能够正常工作。可能有另一个应用程序在该端口上侦听(不使用 Oracle 有线协议),或者您的连接字符串中可能存在错误(错误的数据库、错误的凭据)。然后,您的端口检查将给出误报,而您的代码仍然会失败。 “如何检查端口”这个问题之前已经回答过很多次了。
-
我需要它来扫描我网络上的哪些服务器正在运行 Oracle DB(例如)。由于对 stackoverflow 的许多贡献,我能够确定端口是否正在侦听。不幸的是,没有人进入识别港口服务的领域。 Process.GetProcesses() 方法提供所有详细信息,但端口号除外。因此,从流程的那一侧接近对我来说不起作用。我尝试使用 socket.beginconnect() 方法——它帮助我了解哪个端口正在监听——但没有告诉我谁在监听该端口。我无法桥接这两个
标签: c# oracle sockets networking port