Я создал клиент-серверную программу, которая хорошо работает на той же машине, но я не могу запустить ее на разных ноутбуках.
Я проверил порты и адрес многоадресной рассылки, и все совпадает.
Это мой клиент:
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
public class BroadcastClient {
public InetAddress address;
public byte[] buffer;
public DatagramPacket packet;
public String str, str2;
public MulticastSocket socket;
public BroadcastClient() throws Exception{
socket = new MulticastSocket(1502);
System.out.println("Waiting for messages from server");
transmit();
}
public void transmit(){
try{
//receive data using port
address = InetAddress.getByName("233.0.0.1");
//register client to the group multicast
socket.joinGroup(address);
while (true){
buffer = new byte[256];
packet = new DatagramPacket(buffer, buffer.length);
//receive data from server
socket.receive(packet);
str = new String(packet.getData());
System.out.println("Received message: " + str);
}
}catch (Exception e){
System.out.println("error: " + e);
}finally {
try {
//remove client from multicast group
socket.leaveGroup(address);
//close socket
socket.close();
}catch (Exception e){
System.out.println("Error: "+ e);
}
}
}
}
А это мой сервер:
import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Inet4Address;
import java.net.InetAddress;
public class BroadcastServer {
BufferedReader in = null;
String str = null;
byte[] buffer;
DatagramPacket packet;
InetAddress address;
int port;
DatagramSocket socket;
public BroadcastServer() throws IOException {
System.out.println("Sending message");
//create to receive
socket = new DatagramSocket();
transmit();
}
public void transmit() {
try {
in = new BufferedReader(new InputStreamReader(System.in));
while (true) {
System.out.println("Send to everyone");
str = in.readLine();
buffer = str.getBytes();
address = InetAddress.getByName("233.0.0.1");
//send data to port 1502
packet = new DatagramPacket(buffer, buffer.length, address, 1502);
//send messages to all clients
socket.send(packet);
}
} catch (Exception e) {
System.out.println("Error 2: " + e);
} finally {
try {
in.close();
} catch (Exception e) {
System.out.println("Error3: " + e);
}
}
}
}
Вот как я их называю:
Клиент:
public class UDPClient {
public static void main(String[] args) throws Exception {
BroadcastClient client = new BroadcastClient();
}
}
Сервер:
public class UDPServer {
public static void main(String[] arg) throws Exception {
//start
BroadcastServer server = new BroadcastServer();
}
}
Я что-то упустил?Я не могу понять это вообще.Роутер может быть моей проблемой?