Hallo liebe Java Entwickler
Ich habe vor kurzem angefangen in Java zu programmieren und wollte mir einen Socketserver für Flash erstellen. Am Anfang habe ich es mit einem kleinen Chat versucht, wobei alles ganz gut klappt. Nur wird das ganze schon ab 3 Usern zu einer CPU Auslastung von 100%, da ich noch relativ neu in Java bin, kann ich solche Fehler noch nicht auf Anhieb erkennen. Ich würde mich freuen, falls mir jemand das Problem erklären und einen Lösungsansatz dazu geben könnte.
Code:
Server.class
Client.class
Ich habe vor kurzem angefangen in Java zu programmieren und wollte mir einen Socketserver für Flash erstellen. Am Anfang habe ich es mit einem kleinen Chat versucht, wobei alles ganz gut klappt. Nur wird das ganze schon ab 3 Usern zu einer CPU Auslastung von 100%, da ich noch relativ neu in Java bin, kann ich solche Fehler noch nicht auf Anhieb erkennen. Ich würde mich freuen, falls mir jemand das Problem erklären und einen Lösungsansatz dazu geben könnte.
Code:
Server.class
Code:
import java.net.*;
import java.io.*;
import java.util.*;
public class Server
{
Thread main;
ServerSocket server;
Vector <Client> clients;
public Server()
{
try
{
clients = new Vector<Client>();
server = new ServerSocket(9999);
System.out.println("Server running...");
} catch ( IOException e ) {
System.out.println("Could not create socket on port 9999...");
}
}
public void connect()
{
while ( true )
{
Client w;
try
{
w = new Client(server.accept());
clients.add(w);
Thread t = new Thread(w);
t.start();
System.out.println("New Client connected...");
System.out.println(clients.size() + " clients connected...");
} catch ( IOException e ) {
System.out.println("Could not accept client on port 9999...");
}
for ( int i = 0; i < clients.size(); i++ )
{
clients.elementAt(i).set(clients);
}
}
}
public static void main (String args[]) throws IOException
{
Server server = new Server();
server.connect();
}
}
Client.class
Code:
import java.net.*;
import java.io.*;
import java.util.*;
public class Client implements Runnable
{
Socket c;
Vector <Client> partners;
public Client(Socket client)
{
c = client;
partners = new Vector<Client>();
}
public void run()
{
send();
}
public void send()
{
try
{
InputStream in = c.getInputStream();
byte buffer[] = new byte[2048];
int i = 0;
while ( i > -1 )
{
if ( in.available() > 0 )
{
i = in.read(buffer);
for ( int p = 0; p < partners.size(); p++ )
{
OutputStream out = partners.elementAt(p).c.getOutputStream();
out.write(buffer, 0, i);
}
}
}
} catch ( IOException e ) {
System.out.println("Fatal error: " + e);
}
}
public void set(Vector <Client> clients)
{
partners = clients;
}
}