そのため、ネットワーク クラスの課題のために、学校のサーバーのポートをバインドしてリッスンしようとしています。私が実行しているのは、Java で ServerSocket を作成するときに、上位帯域にあるポートにバインドしようとしても、常に IOException が発生することです。
最初はポート 1088 にバインドしようとしますが (多かれ少なかれ高い期待から)、それが失敗した場合は、1024 より大きいランダムなポートにバインドしようとします (それより低いポートはサーバーで予約されています)。
これが私が得たものです:
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.UnknownHostException;
import java.util.Random;
public class main
{
/**
* @param args
*/
public static void main(String[] args)
{
Random r = new Random();
boolean connected = true;
ServerSocket serverSocket = null;
int welcomePortNum = new Integer(args[0]);
if(welcomePortNum >= 65536)
{
System.out.println("Invalid welcome port number, terminating execution.");
System.exit(0);
}
do
{
connected = true;
System.out.println(welcomePortNum);
try
{
serverSocket = new ServerSocket(welcomePortNum, 5, InetAddress.getByName("loki.ist.unomaha.edu"));
} catch(UnknownHostException e)
{
System.err.println("Could not connect to 'loki.ist.unomaha.edu'.");
connected = false;
//System.exit(1);
}catch(IOException e)
{
System.err.println("Could not get the I/O for the connection to loki.ist.unomaha.edu.");
connected = false;
//System.exit(1);
}
if(connected == false)
welcomePortNum = r.nextInt(64512) + 1024;
System.out.println(connected);
}
while(connected == false);
// TODO Auto-generated method stub
}
}
何か案は?