绑定到远程IP地址时引发IOException的Java ServerSocket

绑定到远程IP地址时引发IOException的Java ServerSocket,java,serversocket,Java,Serversocket,因此,我正在尝试绑定并侦听我的学校服务器上的端口,以便在我的网络课程中完成作业。我遇到的是,当我在java中创建ServerSocket时,我不断地得到一个IOException,即使当我尝试绑定到上层端口时也是如此 我最初尝试绑定到端口1088(或多或少是出于希望),但如果不成功,我将尝试绑定到1024以上的随机端口(服务器上保留任何较低的端口) 以下是我得到的: import java.io.IOException; import java.net.InetAddress; import

因此,我正在尝试绑定并侦听我的学校服务器上的端口,以便在我的网络课程中完成作业。我遇到的是,当我在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

    }

}

有什么想法吗?

Java
ServerSockets
不“连接到远程主机”。它们可以绑定到本地IP地址,这就是您使用的构造函数的用途

编辑 对作业的评论

  • 步骤2的“关联IP地址”部分既不正确也不必要,使您无法在家测试。除非您的服务器实际运行在该主机上,否则他给您的指令不可能工作,而且在任何情况下,通常不会在服务器上执行。只需为IP地址参数传递null,它允许套接字接受来自任何本地IP地址的连接,并添加一条链接到此答案的注释。正确的单词不是“联想”,而是“绑定”。如果作业使用了正确的术语,就不会出现“连接”和“绑定”之间的混淆

  • 我也不明白第三步。在其中一个客户端连接之前,没有要初始化其状态的客户端,然后是初始化其状态的时间。我也不知道他所说的“将该连接标记为不活动”是什么意思。您所要做的就是关闭该客户端的已接受套接字

  • 如果按照建议使用线程,则步骤4“等待事件”作为离散步骤是不可实现的。该函数分布在连接接受线程和所有连接处理线程上

  • 在这个阶段,我不认为你应该有选择使用()的选项。我会在以后的作业中做这个,一部分是出于教学原因,另一部分是为了确保你们两方面都能学好


    我们的教授告诉我们需要使用服务器套接字从远程主机读取数据。您应该使用
    Socket
    (带有远程服务器的主机和端口)连接到远程服务器,并从中读取数据,而不是使用分配的链接。