Çok noktaya yayın işlemlerini büyük ölçüde basitleştirmek için Java'da bir sınıf yazıyorum. Ancak, onunla iki büyük sorun yaşıyorum:Java Çok Noktaya Yayın Veri Gönderme, Alınıyor
- sınıf veri gönderir ancak veri aynı gruptaki herhangi başkaları tarafından alınmazsa (benim net monitör, Wireshark da sahibiz).
- Bazı makinelerde, gönderim paketi TTL geçiş sırasında aşıyor (tekrar Wireshark'a göre).
Lütfen bana yardımcı olabilir misiniz? Saatlerce cevap aramaya ve aramaya çalışıyorum ve kodumun çok noktaya yayın sunucusundan veriye bağlanmak, katılmak, göndermek ve almak için gereken tüm temel prosedürleri izlediği anlaşılıyor.
Multicaster sınıfı:
Multicaster multicast = new Multicaster("239.0.0.0");
try {
multicast.connect();
} catch (MulticasterInitException e) {
//Handle exception...
}
multicast.joinGroup();
try {
multicast.sendData("Hi");
} catch (MulticasterSendException e) {
//Handle exception...
}
Numune kullanımını:
public class Multicaster {
public int port = 5540;
protected String IPAddress;
private MulticastSocket msConn;
private InetAddress netAddr;
public Multicaster(String IPAddress) {
this.IPAddress = IPAddress;
}
public String recieveData() {
byte[] buf = new byte[1000];
DatagramPacket pack = new DatagramPacket(buf, buf.length);
try {
this.msConn.receive(pack);
new Message(pack);
String out = new String(pack.getData());
return out.substring(0, pack.getLength());
} catch (IOException e) {
return new String("");
}
}
public void joinGroup() {
try {
this.msConn.joinGroup(this.netAddr);
} catch (IOException e) {
//This error shouldn't occur since it would caught by the connect() method during initial connection to the host
}
}
public void connect() throws MulticasterInitException {
//Try to create a multicast connection on the given IP address and port
try {
try {
//Create a multicast connection on a given port, throws UnknownHostException
this.msConn = new MulticastSocket(this.port);
//If all goes well, then create a connection to a given IP address using the above port number, throws IOException and SecurityException
this.netAddr = InetAddress.getByName(this.IPAddress);
}
}
/**
* Here all of the possible exceptions that are thrown above
* are caught and handled here. This works just fine.
*/
}
public void sendData(String data) throws MulticasterSendException {
DatagramPacket packet = new DatagramPacket(data.getBytes(), data.length(), this.netAddr, this.port);
try {
this.msConn.send(packet);
} catch (IOException e) {
throw new MulticasterSendException("Java could not communicate with the server. Please check your network connections.", e);
}
}
}
Numune kullanım verileri göndermek için Buraya
sınıfın ilgili kısımlarının snippet'idir veri almak için:Multicaster multicast = new Multicaster("239.0.0.0");
try {
multicast.connect();
} catch (MulticasterInitException e) {
//Handle exception...
}
multicast.joinGroup();
System.out.print(multicast.recieveData());
[http://stackoverflow.com/questions/8471447/java-multicast-sample-program-is-unable-to-deliver-packets-within-lan- ilgili olduğu için yorumlarıma bakabilirsiniz. karşıdan karşıya] (http://stackoverflow.com/questions/8471447/java-multicast-sample-program-is-unable-to-deliver-packets-within-lan-across-ho) – ecle