Передача файлов Java по протоколу UDP для нескольких клиентов, невозможно привязать один и тот же адрес - PullRequest
0 голосов
/ 08 января 2012

Мой проект - передача файла UDP.

Поток таков:

  1. сервер получает запрос клиента
  2. сервер отправляет байты файла клиенту через пакет UDP
  3. цикл 1-2 при подключении нового клиента (Thread)

Мне нужно создать один сокет для одного клиента?Когда я тестирую на своем локальном хосте и создаю более одного сокета, это вызывает исключение (адрес уже используется)

как я могу реализовать это приложение?Любая идея ?или моя концепция не верна?

1 Ответ

0 голосов
/ 10 января 2012

Только один сокет может связываться с любым данным портом UDP.

Похоже, у вас может быть несколько потоков, вызывающих bind (), что приведет к тому, что все, кроме первого, вернут "уже используется "ошибка.Вам нужно вызывать bind () только один раз в начале, перед тем, как создавать рабочие потоки.

Если вам нужно несколько потоков для обработки входящих сообщений, у вас должен быть один поток диспетчера, который прослушивает сокет и отправляет сообщения.в рабочие потоки.

Если вам нужно несколько потоков для отправки исходящих сообщений, все они могут использовать один и тот же дескриптор.

Если вам нужно несколько процессов для выполнения этой функции, они должны будут использоватьотдельные номера портов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...