Hallo,
ich habe das oben genannte Problem. Ich habe einen einfach Lan-Chat programmiert, wobei der server aus einer Klasse und zwei Thread Klassen besteht. Der ie Klasse wartet auf verbindungen und fügt diese gegebenfalls zu einer ArrayList hinzu. Dann wird der erste Thread gestartet, welche immer auf Nachrichten horcht, wenn eine kommt wird diese mit dem dritten Thread an die anderen Clienten geschickt. Ich bin noch am Anfang von Threads und Sockets und mir ist mein Fehler nicht ganz bewusst.
Ich weis zwar, das ich den Socket schließe, aber davor schiebe ich ihn ja noch in eine ArrayList. Hier mein Quellcode, ich denke er sagt mehr als 1000 Sätze. Falls ihr den Stil etwas unschön findet, tut mir das leid, es war auf die schnelle geschrieben.
Danke Für eure Hilfe
ich habe das oben genannte Problem. Ich habe einen einfach Lan-Chat programmiert, wobei der server aus einer Klasse und zwei Thread Klassen besteht. Der ie Klasse wartet auf verbindungen und fügt diese gegebenfalls zu einer ArrayList hinzu. Dann wird der erste Thread gestartet, welche immer auf Nachrichten horcht, wenn eine kommt wird diese mit dem dritten Thread an die anderen Clienten geschickt. Ich bin noch am Anfang von Threads und Sockets und mir ist mein Fehler nicht ganz bewusst.
Ich weis zwar, das ich den Socket schließe, aber davor schiebe ich ihn ja noch in eine ArrayList. Hier mein Quellcode, ich denke er sagt mehr als 1000 Sätze. Falls ihr den Stil etwas unschön findet, tut mir das leid, es war auf die schnelle geschrieben.
Java:
import java.util.Scanner;
import java.io.*;
import java.net.*;
import java.util.ArrayList;
public class server
{
ArrayList list = new ArrayList();
public void verbindung() throws IOException
{
ServerSocket server = new ServerSocket(5040);
while(true)
{
Socket client = null;
try
{
client = server.accept();
list.add(client);
hören h1 = new hören(list);
h1.start();
}
catch(IOException e)
{
e.printStackTrace();
System.out.println("Fehler beim Verbinden");
}
finally
{
if (client !=null)
try{client.close();} catch (IOException e){System.out.println(e.getMessage());}
}
}
}
}
Java:
import java.util.Scanner;
import java.io.*;
import java.net.*;
import java.util.*;
public class hören extends Thread
{
ArrayList list;
Iterator it;
public hören(ArrayList liste){list = liste;it = list.iterator();}
public void run()
{
try{
while(it.hasNext())
{
Socket client = (Socket) it.next();
Scanner in = new Scanner(client.getInputStream());
String nachricht = in.nextLine();
if(!nachricht.equals(null))
{senden send = new senden(list,nachricht);
send.start();
}
}
}
catch(IOException i)
{i.printStackTrace();}
}
}
Java:
import java.util.*;
import java.io.*;
import java.net.*;
public class senden extends Thread
{
ArrayList list;
Iterator it;
String nachricht;
public senden(ArrayList liste, String nachrichten)
{
list = liste;
it = liste.iterator();
nachricht = nachrichten;
}
public void run()
{
try
{
while(it.hasNext()){
Socket client = (Socket) it.next();
PrintWriter out = new PrintWriter(client.getOutputStream(), true);
out.println(nachricht);
}
}
catch(IOException i)
{
i.printStackTrace();
}
}
}
Danke Für eure Hilfe
Zuletzt bearbeitet von einem Moderator: