Ошибка привязки UDP - PullRequest
       8

Ошибка привязки UDP

0 голосов
/ 17 ноября 2011

Я пытаюсь подключиться к удаленному серверу, но я получаю BindException при создании экземпляра DatagramSocket с адресом удаленного сервера.Работает на localhost.

dstAddress = new InetSocketAddress(server, servPort);
srcAddress = new InetSocketAddress(srcPort);

try{
sock = new DatagramSocket();
sock.setReuseAddress(true);
} catch (SocketException ex) {

}

public void connect() {
sock.bind(srcAddress);
sock.connect(dstAddress);
}

Ответы [ 5 ]

1 голос
/ 19 ноября 2011

Вам вообще не нужно звонить bind(). Порт был уже выбран для вас при создании DatagramSocket. connect() также не требуется, вместо этого вы можете установить адрес назначения в каждом DatagramPacket.

0 голосов
/ 19 ноября 2011

Хорошая практика: - Никогда не указывайте исходный порт, если в этом нет необходимости.

0 голосов
/ 19 ноября 2011

Вам не нужно звонить bind() или connect().Порт источника выбирается в конструкторе DatagramSocket (как вы уже сделали), а адрес и порт назначения задаются в каждом отправляемом вами DatagramPacket .

См. это например.

0 голосов
/ 18 ноября 2011

Используйте 0 для вашего scrPort. Это позволит ОС выбирать открытый порт при привязке сокета.

0 голосов
/ 18 ноября 2011

Исходный порт уже используется.

...