Как я могу убедиться, что порт, который я хочу использовать, всегда доступен (то есть не используется)? - PullRequest
1 голос
/ 13 февраля 2012

Есть ли способ принудительного освобождения портов?Порт пропущен через аргументы [].Я пытаюсь создать серверное приложение, которое ожидает 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 ]

0 голосов
/ 13 февраля 2012

Есть ли способ принудительно освободить порты

Нет, потому что, что случилось бы, если бы две программы требовали освобождения порта? В конечном счете вторая программа, которая хочет порт, должна быть неудовлетворена.

0 голосов
/ 13 февраля 2012
  1. Я не думаю, что вы можете принудительно освободить порт.И вообще, это зависит от пользователя.Старайтесь не делать выбор для пользователя;спросите его / ее вместо этого.Что заставляет вас думать, что ваше приложение более важно, чем другое, работающее на этом порту?;)
  2. while(running)
  3. Если вы собираетесь выполнять интенсивную обработку, сделайте так, чтобы ваш сервер порождал поток для каждого клиента вместо того, чтобы выполнять только одну обработку, а остальные ожидали.
...