*.jar file erzeugt x System-Prozesse, wieso?

Dani87

Grünschnabel
Hi Leute,

ich habe eine Frage bezüglich eines *.jar files. Dieses Jar file (wie unten zu sehen) realisiert einen kleinen Chat mithilfe von Sockets. Laufen tut das ganze ganz gut, allerdings erzeugt es (bei einmaliger Ausführung) auf dem Zielsystem (debian Server) ca. 12 Prozesse. Pro User der angemeldet ist kommt dann jeweils ein Prozess mehr hinzu.

Ich habe solche jar files noch nie im Internet auf einem Server laufen lassen, deswegen ist das nun Neuland für mich. Bin bisher nur an mein Win XP gewöhnt. Da gab es halt immer nur ein Prozess, oder? Kann mir jemand sagen wie 12 Prozesse zustande kommen? (+ 1 Prozess für jeden angemeldeten User)?


Viele Grüße,
Dani



Code:
package chat;

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

class Server_Konsole extends Thread
{
	final static String version = "1.6.5";
	final static int port = 16487;

	static Vector<PrintStream> outStreams = new Vector<PrintStream>();
	static Map<String, String> people = new HashMap<String, String>();

	static int anzahlClients = 0;

	public PrintStream out;
	public String ClientID;
	public String name;
	public Socket sock;

	public Server_Konsole(Socket sock)
	{
		this.sock = sock;
		start();
	}

	void add()
	{
		synchronized(outStreams)
		{
			// add people
			people.put(ClientID, name);

			// add PrintStream
			outStreams.add(out);

			// refresh peopleWindow
			for(PrintStream ps : outStreams)
				ps.println("cha" + people);

			// refresh info()
			anzahlClients++;
		}
	}

	void remove()
	{
		synchronized(outStreams)
		{
			// remove people
			people.remove(ClientID);

			// remove PrintStream
			outStreams.remove(out);

			// refresh peopleWindow
			for(PrintStream ps : outStreams)
				ps.println("cha" + people);

			// refresh info()
			anzahlClients--;
		}
	}

	void write(String line, Boolean info)
	{
		synchronized(outStreams)
		{
			SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
			Date currentTime = new Date();
			String s;

			if(info == true)
				s = formatter.format(currentTime) + " <" + name + "> " + line;
			else
				s = formatter.format(currentTime) + " " + line;

			for(PrintStream ps : outStreams)
				ps.println("msg" + s);

			System.out.println(s);
		}
	}

	public void run()
	{
		BufferedReader in;
		String line;

		try
		{
			in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
			out = new PrintStream(sock.getOutputStream());

			String buffer = in.readLine();
			ClientID = buffer.substring(0, 20);
			name = buffer.substring(20, buffer.length());

			add();
			write("<" + name + " hat den Chat betreten>", false);
			info();
			while (true)
			{
				line = in.readLine();
				if(line == null) break;
				write(line, true);
			}
			remove();
			write("<" + name + " hat den Chat verlassen>", false);
			info();
			sock.close();
		}
		catch(Exception e)
		{e.printStackTrace();}
	}

	public static void info()
	{
		System.out.println("\n<---------------------- Mit "+ anzahlClients +" Client(s) verbunden ---------------------->\n");
	}

	public static void main(String[] args)
	{
		ServerSocket listenSocket;
		info();

		try
		{
			listenSocket = new ServerSocket(port);
			while(true)
			{
				Socket sock = listenSocket.accept();
				new Server_Konsole(sock);
			}
		}
		catch(Exception e)
		{ e.printStackTrace(); }
	}
}
 

Neue Beiträge

Zurück