Я кодирую базовое приложение, чат, который отправляет сообщения через сеть, используя многоадресную и одноадресную передачу, в зависимости от ситуации. До сих пор никаких проблем, пока некоторое время назад я не начал часть MulticastSocket. У меня есть BindException, когда я запускаю этот основной код (я удалил все другие мои методы, которые не относятся к части с моей проблемой):
private MulticastSocket socket_multicast;
private int port;
private InetAddress multicast_address;
public void setPort(int p) {
port = p;
}
public void setMulticastAddress(String s) {
try {
multicast_address = InetAddress.getByName(s);
} catch (IOException e) {
e.printStackTrace();
}
}
public void joinGroup() {
System.out.println("Port : "+port+"\n @IP : "+multicast_address+"\n");
try {
socket_multicast = new MulticastSocket(port);
} catch (IOException e) {
e.printStackTrace();
}
try {
socket_multicast.joinGroup(multicast_address);
} catch (IOException e) {
e.printStackTrace();
}
}
Когда я запускаю этот кусок кода, у меня появляется следующая ошибка (я поместил 225.1.1.1 и 4567 в GUI):
Port : 4567
@IP : /225.1.1.1
java.net.BindException: Address already in use
at java.net.PlainDatagramSocketImpl.bind0(Native Method)
at
java.net.AbstractPlainDatagramSocketImpl.bind(AbstractPlainDatagramSocketImpl.java:85)
at java.net.DatagramSocket.bind(DatagramSocket.java:373)
at java.net.MulticastSocket.<init>(MulticastSocket.java:165)
at java.net.MulticastSocket.<init>(MulticastSocket.java:130)
at networkinterface.MulticastIF.joinGroup(MulticastIF.java:61)
Независимо от того, какую комбинацию IP и порта я установил, всегда возникает одна и та же ошибка. Я даже перезагрузил компьютер, он не изменился.
Примечания : Чтобы проверить, я делаю щелчок правой кнопкой мыши в своем классе с основным в представлении Package, затем "Запуск от имени -> Java-приложение". Делает ли Eclipse какую-то виртуальную машину, когда я это делаю, или использует только адрес обратной связи 127.0.0.1, или как? Когда я печатаю результат InetAddress.getLocalHost (); У меня есть "akee-netbook / 127.0.1.1". Поскольку я использую Unicast и Multicast, может быть, он использует только адрес обратной связи и пытается привязать к уже привязанному адресу. Если так, как я могу правильно протестировать свое приложение? Я не знаю, если я проясняюсь, если нет, скажите мне!
И последнее. Почему при печати моего IP-адреса возникает косая черта? Это будет проблемой позже? или это что-то из метода toString ()?