如果当前正在使用端口,如何跳过?

时间:2012-09-04 11:38:10

标签: java sockets nio apache-mina

我目前在8090端口上运行jboss,我的客户端套接字在jboss中运行。我按预定的时间间隔向服务器套接字发送请求以获取数据。现在我的问题是

  1. 由于8090端口已经在使用,客户端套接字是否可以在该端口上打开并连接服务器?

  2. 是否可以在一个端口上运行两个应用程序?

  3. 如果端口已被使用,如何跳过该端口。我的客户端套接字在5,000次请求时打开,因此它会同时打开许多本地端口。因此,如果有任何端口已经在使用中,我需要跳过它。

2 个答案:

答案 0 :(得分:2)

对于TCP / IP,没有。一次只能有一个应用程序在一个端口上进行侦听。现在,如果你有2个网卡,你可以让一个应用程序在第一个IP上侦听,第二个在第二个IP上使用相同的端口号。

要跳过它,您需要进行简单的检查以确定它是否正在使用中:

boolean portTaken = false;
ServerSocket socket = null;
try {
    socket = new ServerSocket(portNumber);
    } 
catch (IOException e) {
    portTaken = true;
} 

然后对每个端口检查布尔值,看它是否正在使用,直到找到一个可用。

答案 1 :(得分:0)

您无需担心客户端套接字的本地端口。操作系统会为您找到一个,除非您使用太多,如果您一次有5,000个,这是一个明显的可能性。打开Socket时只是不要指定任何本地端口信息。