Ich bin grad dabei nen socks5 proxyserver zu erstellen, er funktioniert schon mehr oder weniger. die authentifizierung läuft und die seiten werden geladen, aber nach kurzer zeit ruckelt es wie sau, die cpu auslastung ist bei 100% und der prozess nimmt auch immer mehr ram ein.
ich glaub ich mache da irgendwas mit den threads falsch.
hier ist der hauptteil der die threads erzeugt:
ich hab clientThread und targetThread. ich weis aber nicht ob der thread weiterhin ausgeführt wird wenn die instanz eines dieser objekte überschrieben wird. ist das der fall?
in jedem der threads wird dann eigentlich nur der inputstream gelesen und zum jeweiligen outputstream weitergeleitet, bei 2 threads glaube ich nicht dass es 100% cpu auslastung verursachen sollte.
hat jemand ne idee wie man das richtig regeln kann?
ich glaub ich mache da irgendwas mit den threads falsch.
hier ist der hauptteil der die threads erzeugt:
Java:
public void run()
{
System.out.println("waiting for clients");
try{
while(true)
{
client=serverSocket.accept();
clientThread=new ProxyThread(client,null,this);
clientThread.client=true;
clientThread.authenticate(); //in der authenticate methode wird der thread am ende auch gestartet.
while(true)
{
if(clientThread.out!=null)
{
targetThread=new ProxyThread(clientThread.out,client,this);
targetThread.start();
break;
}
}
}
}catch(Exception e){System.err.println("connection problem: "+e);};
System.out.println("Client Connected:"+ client.getLocalAddress());
}
ich hab clientThread und targetThread. ich weis aber nicht ob der thread weiterhin ausgeführt wird wenn die instanz eines dieser objekte überschrieben wird. ist das der fall?
in jedem der threads wird dann eigentlich nur der inputstream gelesen und zum jeweiligen outputstream weitergeleitet, bei 2 threads glaube ich nicht dass es 100% cpu auslastung verursachen sollte.
hat jemand ne idee wie man das richtig regeln kann?