Я пытаюсь создать сервер-клиент в java с многоадресной рассылкой.
Сервер отправляет то, что получает, с клавиатуры, в то время как он отличается от «выхода», в локальном режиме работает отлично.Это мой код клиента и сервера:
Клиент:
import java.io.*;
import java.net.*;
public class MCClient {
public static void main(String[] args) throws IOException {
MulticastSocket s = new MulticastSocket(10000);
InetAddress addressMultiCast = InetAddress.getLocalHost();
s.setInterface(addressMultiCast);
s.setBroadcast(true);
InetAddress group = InetAddress.getByName("231.0.0.1");
s.joinGroup(group);
String salida = new String();
while (!salida.equals("salir")) {
byte[] buffer = new byte[256];
DatagramPacket dgp = new DatagramPacket(buffer, buffer.length);
s.receive(dgp);
byte[] buffer2 = new byte[dgp.getLength()];
System.arraycopy(dgp.getData(),
0,
buffer2,
0,
dgp.getLength());
salida = new String(buffer2);
System.out.println(salida);
}
s.leaveGroup(group);
s.close();
}
}
Сервер:
import java.io.*;
import java.net.*;
public class MCServer {
public static void main(String[] args) throws IOException {
MulticastSocket s = new MulticastSocket();
InetAddress addressMultiCast = InetAddress.getLocalHost();
s.setInterface(addressMultiCast);
s.setBroadcast(true);
InetAddress group = InetAddress.getByName("231.0.0.1");
byte[] vacio = new byte[0];
DatagramPacket dgp = new DatagramPacket(vacio, 0, group,
10000);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String linea = br.readLine();
while (!linea.equals("salir")) {
byte[] buffer = linea.getBytes();
dgp.setData(buffer);
dgp.setLength(buffer.length);
s.send(dgp);
linea = br.readLine();
}
s.close();
}
}
У меня есть сервер OpenVPN, чтобы убедиться, что все пользователи находятся на одномсеть, но когда я запускаю многоадресную рассылку клиента и сервера, она не работает, если они находятся в разных сетях, WLAN и WiFi, но все они подключены к VPN;если они все находятся в WLAN, это работает, и если они все находятся в WiFi, это также не работает.Можете ли вы сказать мне, что я делаю не так?Я проверил сетевой интерфейс, и он одинаков для всех, когда они подключены к VPN.Спасибо