Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定TCP/IP端口是否已在Windows下使用?_Windows_Sockets_Windows Vista_Tcp - Fatal编程技术网

确定TCP/IP端口是否已在Windows下使用?

确定TCP/IP端口是否已在Windows下使用?,windows,sockets,windows-vista,tcp,Windows,Sockets,Windows Vista,Tcp,我使用的跨平台开发环境有一个内置函数,用来指示tcp端口是否可用。但是,该功能在Vista下发生故障,并始终返回“可用” 是否有一种简单的方法(例如dll函数)可以用来正确确定此信息而无需.Net?您可以尝试使用常用的Winsock函数绑定到端口并在端口上侦听。如果其他设备已在同一端口上侦听,您将收到一个错误(WSAEADDRINUSEfrom)。为了避免引入附加的依赖项或特定于windows的代码,您只需尝试使用该端口并捕获任何问题(如防火墙软件拦截) 只需使用Win32 Nw API枚举TC

我使用的跨平台开发环境有一个内置函数,用来指示tcp端口是否可用。但是,该功能在Vista下发生故障,并始终返回“可用”


是否有一种简单的方法(例如dll函数)可以用来正确确定此信息而无需.Net?

您可以尝试使用常用的Winsock函数绑定到端口并在端口上侦听。如果其他设备已在同一端口上侦听,您将收到一个错误(
WSAEADDRINUSE
from)。

为了避免引入附加的依赖项或特定于windows的代码,您只需尝试使用该端口并捕获任何问题(如防火墙软件拦截)

只需使用Win32 Nw API枚举TCP端口。

哪种开发环境?哪个函数呢?RealBasic 2009R2.1内置了TCPSocket.Listen,在“使用中”的情况下,它应该触发lasterrorcode=105的“错误”事件。它在Mac OS X和Linux下可以做到这一点。您可能需要枚举所有网络接口并绑定到它们。我不了解Windows,但Linux当然允许多个应用程序绑定并侦听同一端口,只要它们使用不同的本地IP地址。@Tom:我想这取决于目标是确定是否有其他应用程序正在使用给定的端口,还是您的应用程序可以侦听给定的端口。我的解决办法适用于后一个问题。