V
villiboy
Gast
hi leute,
hier mal den code meines chat programms, leider geht das nicht so wie ich mir das vorstelle.
woran liegt das? wenn ich zwei chats erzeuge also z.b. multi1 und multi2 geht es nicht, ich kann zwar in die konsole was eingeben aber er sendet und empängt nichts! für euere hilfe wäre ich sehr dankbar.
merci
hier der thread der ständig abfragen soll
für euere hilfe wäre ich sehr dankbar, bin noch anfänger!!
danke
hier mal den code meines chat programms, leider geht das nicht so wie ich mir das vorstelle.
woran liegt das? wenn ich zwei chats erzeuge also z.b. multi1 und multi2 geht es nicht, ich kann zwar in die konsole was eingeben aber er sendet und empängt nichts! für euere hilfe wäre ich sehr dankbar.
merci
Code:
package mvi;
import java.io.*;
import java.net.*;
/**
*
* @author Martin
* Klasse zum verschicken einer serialisierten Nachricht an die Multicasr Adresse.
*
*/
public class MultiCast {
public static int port;
MulticastSocket msocket;
DatagramPacket multiPacketSend;
ChatListenThreadMulti lt;
public MultiCast(PropertyParser pp, Buddy bu) throws IOException {
try {
port = PropertyParser.port;
msocket = new MulticastSocket(port);
msocket.joinGroup(pp.multiAddress);
//System.out.println(pp.multiAddress);
}
catch (IOException e) {
System.out.println("Kann kein MulticastSocket erzeugen!!!!");
}
//Buffer für die zu versendenden Daten
byte[] multiSend = new byte[256];
//Erzeugen eines DatagramPacket zum Daten versenden
multiPacketSend = new DatagramPacket(multiSend, multiSend.length, pp.multiAddress, PropertyParser.port);
//Thread zum hören ......
//lt = new ChatListenThreadMulti(port);
//lt.start();
msocket.receive(multiPacketSend);
String message = new String(multiPacketSend.getData(),0,multiPacketSend.getLength());
System.out.println(message);
//Nachricht eingeben und versenden
BufferedReader ki = new BufferedReader(new InputStreamReader(System.in));
String tmp;
//String EXIT = "exit";
while (true) {
System.out.print(pp.nickname +": ");
tmp = ki.readLine();
/*if(tmp.equals(EXIT)) {
System.out.println("Chat beendet ....");
//Abmeldenachricht generieren und senden
multiSend = tmp.getBytes("Abbruch durch Benutzer!!!");
multiPacketSend.setData(multiSend);
msocket.send(multiPacketSend);
msocket.close();*/
if ((tmp != null) && (tmp.length() > 0)) {
multiSend = tmp.getBytes();
multiPacketSend.setData(multiSend);
msocket.send(multiPacketSend);
System.out.println("Sending on Port: " + port);
System.out.println("Sending: " + tmp);
//}
}
}
}
}
hier der thread der ständig abfragen soll
Code:
package mvi;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.MulticastSocket;
public class ChatListenThreadMulti extends Thread {
private MulticastSocket socket = null;
private boolean exit = false;
//Konstruktor erstellt einen DatagramSocket zum hören auf dem verwendeten Port
public ChatListenThreadMulti (int port) {
//Namen des Thread
//super("MyChatThread");
//Socket auf Port erstellen
try {
socket = new MulticastSocket(port);
System.out.println("Listening on Port: " + socket.getLocalPort());
}
catch(IOException e){
System.out.println("Kann keinen DatagramSocket erzeugen auf dem Port " + port);
}
}
//Überlagerung der Methode run der Klasse Thread
public void run() {
//wenn kein DatagramSocket erzeugt werden kann, wird der Thread abgebrochen.
if (socket == null)
return;
//Höre solange auf dem Port, bis es abgebrochen wird
while(!exit) {
try {
//Hier kommen die Eingegangenen Nachrichten rein
byte[] buf = new byte[256];
DatagramPacket packet;
//Passendes DatagramPacket anlegen
packet = new DatagramPacket(buf, buf.length);
//Daten empfangen auf socket
socket.receive(packet);
//Adresse der Adressdatei ermitteln und ausgeben
InetAddress address = packet.getAddress();
//Daten auslesen
String received = new String(packet.getData(), 0, packet.getLength());
//Daten ausgeben
System.out.println("Nachricht empfangen von: " + address.getHostAddress() + ": " + received);
}
catch(IOException e) {
System.err.println("Kann keinen DatagramSocket erzeugen");
exit = true;
}
}
//Socket wieder schliessen
socket.close();
}
public DatagramSocket getListenSocket(){
return socket;
}
}
für euere hilfe wäre ich sehr dankbar, bin noch anfänger!!
danke