1

有没有办法强制释放端口?端口通过 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;
    }
4

2 回答 2

0
  1. 我认为您不能强制释放端口。无论如何,这取决于用户。尽量不要为用户做选择;而是问他/她。是什么让您认为您的应用程序比在该端口上运行的其他应用程序更重要?;)
  2. while(running)
  3. 如果您要进行繁重的处理,请让您的服务器为每个客户端生成一个线程,而不是只有一个处理而其他处理等待。
于 2012-02-13T12:22:50.927 回答
0

有没有办法强制释放端口

不,因为如果两个程序都要求一个端口是免费的,会发生什么?最终,第二个想要端口的程序必须不满足。

于 2012-02-13T12:22:58.833 回答