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

标签 java sockets network-programming udp datagram

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

最佳答案

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

关于java - 如何确保我想要使用的端口始终可用(即未使用)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9260367/

相关文章:

java - 使用 JMS 事务时出错 - javax.jms.IllegalStateException : The session is closed

java for 每个循环都期望对象作为类型,同时它包含一个整数数组

python - 为什么我会看到 'connection reset by peer' 错误?

c++ - Windows Phone 8.1 是否支持 select() 套接字函数?

Java 输入流缓冲区对象?

go - SSH 未知 TTY 错误消息

java - 如何获取发送请求的客户端的IP?

java 。无法使用 DateFormat 解析日期

java - java如何比较派生类对象与基类对象?

c - 当连接打开但没有发送数据时,send() 和 recv() 返回什么?