probleme mit dem chat programm

Status
Nicht offen für weitere Antworten.
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
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
 

dieta

Top Contributor
Kann es vielleicht sein, dass du WinXP mit ServicePack 2 verwendest? Das blockt auf jeden Fall alles was von DatagramSocket versucht wird zu senden.
 
V

villiboy

Gast
ja ich verwende winXp servicepack2 aber das problem habe ich jetzt gelöst. aber jetzt habe ich ein anderes ...

trotzdem danke
 
V

villiboy

Gast
hier mal der neue code ....

also ich möchte gerne ein buddy-object zu beginn des chats starten. diese daten hole ich mir aus einer property-datei. das buddy-object serialisiere ich mit den property-daten. dann möchte ich den chat starten und danach auswählen können wie ich die nachrichten versenden möchte bzw. an wen.

hier mal der code:

Code:
package mvi;

import java.io.*;
import java.net.*;

public class Chat {

	/**
	 * @author Martin
	 * @param args
	 * @throws Exception 
	 * 
	 */
	
	public static void main(String[] args)throws Exception {
		// TODO Auto-generated method stub
		
		BufferedReader men = new BufferedReader(new InputStreamReader(System.in));
		String tmp;
		
		PropertyParser mp = new PropertyParser("IMCL_properties.htm");//später über args[0] einlesen
		Buddy bo = new Buddy(PropertyParser.nickname, mp.multiAddress, PropertyParser.mport);
		
		//Testlauf zum verschicken von Buddys
		DatagramSocket testsocket = new DatagramSocket(PropertyParser.mport);
		
		ByteArrayOutputStream bout = new ByteArrayOutputStream();
		ObjectOutputStream ous = new ObjectOutputStream(bout);
		ous.writeObject(bo);
		ous.close();
		byte []data = bout.toByteArray();
		System.out.println("MARKE1");
		BuddyList bl = new BuddyList();
		System.out.println("MARKE2");
		bl.buddySend(data, testsocket, mp);
		System.out.println("MARKE3");
		bl.buddyReceive(testsocket);
		System.out.println("MARKE4");
		bl.add(bo);
		System.out.println("Buddy-Object gesendet!");
		testsocket.close();
		
		
		
		System.out.println("**************************************************");
		System.out.println("****** Herzlich Willkommen im MVI-Chat SS06 ******");
		System.out.println("**************************************************");
		
		System.out.println("MENUE:");
		System.out.println("1. sendToChannel");
		System.out.println("2. sendToUser");
		System.out.println("3. exit");
		
		System.out.print("Bitte Option auswählen 1,2 oder 3: ");
		
		try {
			while(true) {
				tmp = men.readLine();
				int readOption = Integer.parseInt(tmp);
		
					switch(readOption) {	
						case 1: {
							//TODO Hier wird die Klasse MultiCast.java aufgerufen
							MultiCast mc = new MultiCast(mp,bo);
							System.out.println("Option 1 gewählt!");
							break;
						}
						case 2: {
							//TODO Hier wird die Klasse Unicast.java aufgerufen
							UniCast uc = new UniCast(mp,bo);
							System.out.println("Option 2 gewählt!");
							break;
						}
						case 3: {
							//Hier wird der Chat beendet
							System.out.println("Chat beendet");
							break;
						}
						default: {
							System.out.println("Nicht erlaubte eingabe !!!");
							break;
						}
					}
			}
		}
		catch(IOException e) {
			System.out.println("ERROR");
		}
	}
}

hier die klasse buddyList, wo ich alle teilnehmenden buddy-obj. speichern möchte bzw. funktionen zum versenden und zum empfangen.

Code:
package mvi;

import java.net.*;
import java.util.*;
import java.io.*;

public class BuddyList {
	
	Vector buList = new Vector(10);
	byte[] buffer = new byte[256];
	
	
	//Buddy-Object dem Vector buList hinzufügen
	void add(Buddy bu) {
		if(buList.add(bu)) {
			System.out.println("Buddy: " + bu.getNick() + " in BuddyList eingetragen!");
		}
		else {
			System.out.println("Buddy konnte nicht in die Liste eingefügt werden!");
		}			
	}
	
	//Buddy-Object versenden
	void buddySend(byte[] buObject, DatagramSocket dsocket, PropertyParser pp){
		try {
			DatagramPacket dpacket = new DatagramPacket(buObject, buObject.length, pp.broadAddress, PropertyParser.mport);
			dsocket.send(dpacket);
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	//Buddy-Object empfangen
	void buddyReceive(DatagramSocket dsocket) {
		try {
			DatagramPacket dpacket = new DatagramPacket(buffer, buffer.length);
			dsocket.receive(dpacket);
			byte[]data = dpacket.getData();
			
			ByteArrayInputStream bais = new ByteArrayInputStream(data);
			ObjectInputStream ois = new ObjectInputStream(bais);
			Buddy bu = (Buddy) ois.readObject();
			System.out.println(bu.getNick());
			ois.close();
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	//Buddy-Object ausgeben
	void printList() {
		for(int i=0; i < buList.size(); i++) {
			System.out.println(buList.get(i));
		}
	}
}

problem ist, wenn ich den chat und eine copy des chats mit anderen property-werten starte.
bekomme ich folgende fehlermeldung:

Exception in thread "main" java.net.BindException: Address already in use: Cannot bind
at java.net.PlainDatagramSocketImpl.bind0(Native Method)
at java.net.PlainDatagramSocketImpl.bind(Unknown Source)
at java.net.DatagramSocket.bind(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at mvi.Chat.main(Chat.java:25)

irgendwie finde ich meinen fehler nicht.

wäre nett, wenn mir da jemand weiter helfen könnte!!!

danke
 

dieta

Top Contributor
Der Fehler kommt daher, dass du auf einem Computer einen Port nur einmal öffnen kannst (so ist es jedenfalls bei mir). Wenn du dein Programm aber zwei mal auf dem selben Computer startest, versucht er den Port zwei mal zu öffnen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Probleme bei Chat programm Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
platofan23 Probleme mit Socket bei Android Studio? Netzwerkprogrammierung 22
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
K Probleme bei HTML-Mail-Abruf mit IMAP bei 1und1 Netzwerkprogrammierung 2
L Socket SSLServer Probleme Netzwerkprogrammierung 0
H Probleme mit UDP Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
R Probleme mit JMS Netzwerkprogrammierung 1
A Probleme beim Klassen-Import von sun.misc. ... Netzwerkprogrammierung 19
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
B Probleme beim ersten Netzwerkprogramm Netzwerkprogrammierung 3
M Probleme mit FTP Netzwerkprogrammierung 19
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
Maxim6394 Probleme bei Messenger Netzwerkprogrammierung 16
I Socket UDP Hole Punching bereitet Probleme Netzwerkprogrammierung 14
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
S HTTP Probleme mit POST-Befehl Netzwerkprogrammierung 2
R FTPS - Probleme mit FTPSClient Netzwerkprogrammierung 2
S Probleme mit XMLEncoder/XMLDecoder Netzwerkprogrammierung 2
D Server - Client Probleme Netzwerkprogrammierung 9
Weiti HTTP Zertifikat-Probleme - InstallCert.java Netzwerkprogrammierung 2
M Socket Probleme mit einfacher Socketverbindung Netzwerkprogrammierung 3
H Probleme mit GUI (RMI) Netzwerkprogrammierung 6
T RMI Probleme mit RMI-Server Netzwerkprogrammierung 4
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
T FTP Probleme mit Passiv und Binary Mode Netzwerkprogrammierung 3
J Probleme mit Threads (Client terminiert) Netzwerkprogrammierung 4
S Socket SocketServer und Client machen Probleme Netzwerkprogrammierung 6
B Server / Client Anwendung, Client GUI Probleme Netzwerkprogrammierung 11
F RMI probleme Netzwerkprogrammierung 3
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
E jPcap Probleme Netzwerkprogrammierung 3
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
T Probleme mit Jpcap Netzwerkprogrammierung 18
P Probleme mit OutputStream Netzwerkprogrammierung 7
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
B Probleme mit FTP verbindung Netzwerkprogrammierung 22
L Probleme bei Chatserver Netzwerkprogrammierung 6
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
G Probleme mit SecruityManager + RMI Netzwerkprogrammierung 10
derMartin Probleme mit NNTP Client Netzwerkprogrammierung 2
A Probleme mit Citrix Netzwerkprogrammierung 17
A Probleme mit kleinem Messenger-Programm Netzwerkprogrammierung 4
K RXTXcomm : Install - Probleme Netzwerkprogrammierung 7
R Probleme mit UDP Netzwerkprogrammierung 4
I Probleme mit 'JSSE Samples' von Sun Netzwerkprogrammierung 5
T RMI - Probleme beim Starten des Clients Netzwerkprogrammierung 4
E InetAddress Klasse-Probleme Netzwerkprogrammierung 4
M dateien übertragen, probleme mit versch. Strömen? Netzwerkprogrammierung 4
R Rechte Probleme bei Applets Netzwerkprogrammierung 16
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
P Probleme mit Input- / Output-Streams Netzwerkprogrammierung 2
F WLAN Probleme (CLIENT-SERVER) Netzwerkprogrammierung 4
J Probleme mit ObjectOutputStream! Netzwerkprogrammierung 15
S Probleme beim Beschränken der Geschwindigkeit Netzwerkprogrammierung 6
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
G Fragen/Probleme mit JavaMail Netzwerkprogrammierung 2
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
C Probleme bei Dateiupload mit socket Netzwerkprogrammierung 4
T FTP Chatprogramm probleme Netzwerkprogrammierung 2
C RMI Probleme mit iptables Netzwerkprogrammierung 2
D socket exception + timing probleme Netzwerkprogrammierung 2
G Probleme bei Proxy-Server! Netzwerkprogrammierung 5
S Probleme mit HttpURLConnection Netzwerkprogrammierung 10
D Habe 2 Probleme: Input eingabe und Multi Socket Server Netzwerkprogrammierung 2
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
L Chat Fenster Netzwerkprogrammierung 1
J Socket Ein Chat Server Tutorial Netzwerkprogrammierung 8
S Java Chat Server Netzwerkprogrammierung 8
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
P Chat in Java Netzwerkprogrammierung 3
C Java Chat Admin Kenzeichnung Netzwerkprogrammierung 14
D Chat Server/mehre Client Netzwerkprogrammierung 9
Androbin Socket Fehlerhafter Applet-Chat Netzwerkprogrammierung 12
C Microsoft Comic Chat Netzwerkprogrammierung 0
G Socket Socket verbindung für Chat System Netzwerkprogrammierung 3
O Chat (Server) sendet an verschieden Benutzer. Netzwerkprogrammierung 10
J Chat programmieren Netzwerkprogrammierung 12
L Chat Server programmieren Netzwerkprogrammierung 10
TheJavaKid Webcam-Chat im Applet (ChatRoulette Klon) Netzwerkprogrammierung 10
H Socket Java Chat - Verbindung zum Server fehlgeschlagen. Netzwerkprogrammierung 5
K Socket Chat-GUI eigenes Event nach Empfangen Netzwerkprogrammierung 2
K chat Netzwerkprogrammierung 13
F RMI einfacher Chat - Callbacks(?) funktionieren nicht Netzwerkprogrammierung 7
L Socket Chat funktioniert nicht Netzwerkprogrammierung 2
T Socket Java Chat Netzwerkprogrammierung 2
xDarkSunx Chat JFrame Netzwerkprogrammierung 3
xDarkSunx Hilfe Chat Login Netzwerkprogrammierung 7
E JAVA Chat Netzwerkprogrammierung 19
C Java Chat funktioniert nicht richtig Netzwerkprogrammierung 6
I Chat-Client empfängt nichts vom Server Netzwerkprogrammierung 3
A Socket UDP Chat Verbindungsproblem im WWW (Server sendet ins leere) Netzwerkprogrammierung 11

Ähnliche Java Themen

Neue Themen


Oben