有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何确保要使用的端口始终可用(即未使用)?

有没有办法强制开放港口?端口通过args[]传递。 我正在尝试构建一个服务器应用程序,它会等待来自多个设备的UDP数据包,因此我不想确保它总是侦听适当的端口。数据包中的数据将被处理,结果将被写入数据库。我使用了一个while(true)循环来监听新的数据包。当多个设备(比如2000台)同时发送时,是否可能会出现并发问题?除了使用while(true)还有其他方法吗?有什么建议吗

编辑(主题可能不对) 我使用这些方法来转换2字节和4字节长度的有符号二补。我找不到更简单的方法

public static Long twosComp16(String str) throws java.lang.Exception
    {
        Long num = Long.valueOf(str, 16);

        int fix = 65536;

        if (num > (fix/2))
            return num - fix;
        else return num;
    }
    public static Long twosComp32(String str) throws java.lang.Exception
    {
        Long num = Long.valueOf(str, 16);

        long fix = 4294967296L;

        if (num > (fix/2))
            return num - fix;
        else return num;
    }

共 (2) 个答案

  1. # 1 楼答案

    Is there a way to force-free ports

    不,因为如果两个项目都要求一个端口免费,会发生什么?最终,想要港口的第二个项目必须不能得到满足

  2. # 2 楼答案

    1. 我认为你不能强行释放一个港口。不管怎样,这取决于用户。尽量不要为用户做出选择;去问问他/她。是什么让你觉得你的应用程序比在该端口上运行的另一个应用程序更重要?;)
    2. while(running)
    3. 如果要进行大量处理,请让服务器为每个客户机生成一个线程,而不是只有一个处理,其他处理等待