这是我在这里的第一个问题,我将尝试提供尽可能多的信息。
我在我的 PC 上安装了 Apache 2.2 的本地安装。我默认绑定到端口 100(不要问我为什么)。当我运行 Apache 时,我无法创建端口为 100 的套接字服务器,因为该端口已在使用中。我想要做的是在我正在编写的 Java 服务器中复制此功能。
目前,我创建了一个这样的套接字服务器:
ServerSocket srv = new ServerSocket(100);
问题是,这不会阻止其他应用程序使用此端口。我可以运行我的 Java 应用程序的多个副本,甚至在此之后启动我的 Apache 服务器。我希望 java Server Socket 模仿 Apache 的行为并阻止其他应用程序绑定到所选端口。
我尝试使用谷歌,我唯一能找到的是这个http://www.dreamincode.net/forums/topic/124376-block-port/这意味着创建一个如上所示的套接字服务器应该阻止使用端口在其他应用程序中。
我使用的是 Windows 7 Ultimate-64bit、NetBeans IDE 6.9.1 和 Java 1.6.0_23。
感谢用户658991,
在客户端连接或除非我调用 ServerSocket.accept(); 之前,该端口似乎不会被阻塞。
try
{
ServerSocket server = new ServerSocket(12345);
System.out.println("Socket Server Established on port " + server.getLocalPort());
server.accept(); // Code Stops here until connection is completed.
// Do Stuff
}
catch(IOException e)
{
System.out.println("Socket Server Connection Failed!");
System.out.println(e);
System.exit(-1);
}