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

时间:2012-02-13 12:16:27

标签: java sockets network-programming udp datagram

有没有办法强制免费使用端口?端口通过args []传递。 我正在尝试构建一个等待来自多个设备的UDP数据包的服务器应用程序,因此我不确定它将始终监听相应的端口。来自数据包的数据将被处理,结果将被写入DB。我正在使用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 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

  

有没有办法强制释放端口

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