gpt4 book ai didi

Java ServerSocket 在绑定(bind)到远程 IP 地址时抛出 IOException

转载 作者:行者123 更新时间:2023-12-02 07:05:34 25 4
gpt4 key购买 nike

因此,我正在尝试绑定(bind)并监听学校服务器上的端口,以完成网络类(class)中的作业。我遇到的问题是,当我在 java 中创建 ServerSocket 时,即使我尝试绑定(bind)到位于上带的端口,我也会不断收到 IOException。

我最初尝试绑定(bind)到端口 1088(或多或少出于厚望),但如果不成功,我将尝试绑定(bind)到高于 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 不“连接到远程主机”。它们可以绑定(bind)本地 IP 地址,这就是您使用的构造函数的用途。

编辑对作业的评论。

  1. 步骤 2 中的“关联 IP 地址”部分既不正确又不必要,并且使您无法在家进行测试。除非你的服务器实际上在该主机上运行,​​否则他给你的指令不可能起作用,并且无论如何它通常不会在服务器中完成。只需为 IP 地址参数传递 null,这让套接字接受来自任何本地 IP 地址的连接,并添加链接到此答案的注释。正确的词不是“关联”而是“绑定(bind)”。如果作业使用了正确的术语,就不会混淆“连接”和“绑定(bind)”。

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

  3. 如果您按照建议使用线程,则第 4 步“等待事件”无法作为独立步骤实现。该函数分布在连接接受线程和所有连接处理线程上。

  4. 我认为现阶段不应该给您使用 select() 的选项。我会把这个作为后续作业,部分是出于教学原因,部分是为了确保你学会两者。

关于Java ServerSocket 在绑定(bind)到远程 IP 地址时抛出 IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16157070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com