Proxyserver Performance Problem

Maxim6394

Bekanntes Mitglied
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:
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?
 

irgendjemand

Top Contributor
aua ... ohne den rest zu kennen strotz dieses stück schon so nur vor fehlern ...

1) nach dem accept sofort in neuen thread auskoppeln ... und nicht noch haufen kram dran rum basteln

2) schon mal was von getter / setter gehört ? ... variablen protected/public zu machen und dann von außen dierekt zu manipulieren ist ziemlich schlechter stil ... solltest du unbedingt ändern

3) schon mal den fall bedacht wenn clientThread.out==null ? denn dann rast die while wie blöd und frisst damit CPU zeit ohne ende ... ein [c]sleep(100);[/c] innerhalb der inneren while sollte abhilfe schaffen ...

alles in allem ist schon das stück hier ziemlich schlecht ... da will ich den rest garnicht erst sehen ... sonst bekommst du von mir noch ein "fang lieber noch mal neu an" zu hören ...

btw : warum RAD neu erfinden ? gibt doch schon SOCKS implementierungen in java ... -> GOOGLE
 

Maxim6394

Bekanntes Mitglied
den ersten punkt versteh ich nicht ganz. wie soll einen thread auskoppeln? ich beende ihn schon mit interrupt() bevor ich einen neuen starte. ich hab jetzt in jede while schleife auch noch ein sleep(100) gemacht, es bringt trotzdem nichts.

hier die run methode von ProxyThread:

Java:
while(true)
		{					
			try{
				bytesRead=in.getInputStream().read(buffer);
				
				if(bytesRead!=-1)
				{
					byte[] outputArray=new byte[bytesRead];
					for(int i=0;i<bytesRead;i++)
					{outputArray[i]=buffer[i];}
					if(client)
					{
						printBytes(buffer,bytesRead);
					}
					
					
					out.getOutputStream().write(buffer,0,bytesRead);
		
				}
				else
				{
					in.getInputStream().close();				
					out.getOutputStream().close();
					
					in.close();
					out.close();					
				}			
				sleep(100);		
			}catch(Exception e){}
	
		}

ich kann genauso sleep(5000) machen, es ändert überhaupt nichts. ich hab auch versucht so viel wie möglich zu entfernen, die for schleife oben zum beispiel hab ich rausgenommen, immernoch keine änderung.

übrigens, wenn ich da unten bei der exception den fehler ausgebe wird das in der endlosschleife ausgegeben, obwohl ich den thread doch kurz vorher beendet hab und sogar noch ein break; hinzugefügt hab.

Java:
java.net.SocketException: Software caused connection abort: recv failed
java.net.SocketException: Socket is closed
 
Zuletzt bearbeitet:

irgendjemand

Top Contributor
mit 1) war gemeint das du sofort nach dem accept() einen neuen thread startest ... du allerdings hast dann da noch sachen wie weitere methoden und vor allem einen endlos-loop ... ist klar das alles freezed

2) das sleep() sollte in den code da ganz oben innerhalb der inneren while wo [c]if(clientThread.out!=null)[/c] steht ... nur halt unter den if block ... da ja bei dir scheinbar clientThread.out == null ist womit die while wie blöde CPU zeit frisst

ich habs zwar schon mal irgendwo gepostet in den letzten tagen ... aber für dich mal wieder ein minimal beispiel für server-client kommunikation

Server.java
Java:
public class Server extends Thread
{
	private ServerSocket serverSocket=null;
	private boolean RUN=false;
	public static void main(String[] args) { (new Server()).start(); }
	private Server()
	{
		serverSocket=new ServerSocket(12345);
		RUN=true;
	}
	public void run()
	{
		while(RUN)
		{
			try
			{
				Socket socket=serverSocket.accept();
				(new ClientThread(this, socket)).start();
			}
			catch(Exception e) { e.printStackTrace(); }
		}
	}
}

ClientThread.java
Java:
class ClientThread extends Thread
{
	private Server server=null;
	private Socket socket=null;
	private boolean RUN=false;
	private BufferedReader in=null;
	private PrintStream out=null;
	protected ClientThread(Server server, Socket socket)
	{
		this.server=server;
		this.socket=socket;
		RUN=true;
	}
	public void run()
	{
		in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
		out=new PrintStream(socket.getOutputStream());
		String line="";
		while(RUN)
		{
			try
			{
				line=in.readLine();
				if(line==null)
				{
					RUN=false;
					continue;
				}
				if(line.equals(""))
				{
					sleep(10);
					continue;
				}
				// weitere bearbeitung
			}
			catch(Exception e) { e.printStackTrace(); }
		}
	}
	protected void sendMessage(String line) { out.println(line); }
}

der client selbst ist dann ähnlich wie der ClientThread aufgebaut ... nur das er anstelle eines ServerSockets einen Socket zum server öffnet ...

btw : in ein catch-block gehört IMMER mindestens das hier -> [c]Exception.printStackTrace();[/c]
damit man auch weis wo und warum der fehler aufgetreten ist *siehe mein code*

richtiges exception-handling hast du in meinen code noch selbst einzubauen ... ich hoffe das bekommst du hin ...
ansonsten wäre es auch noch gut wenn man in Server.java etwas einbaut um dort RUN zu togglen
 

Maxim6394

Bekanntes Mitglied
ich hab jetzt in der main klasse irgendwas verändert und es lastet die cpu jetzt nur noch bis höchstens 60% aus. es werden trotzdem haufenweise socket closed exceptions ausgegeben, undzwar genau eine zeile nachdem ich abfrage ob die sockets nicht geschlossen sind.

Java:
if(!in.isClosed() && !out.isClosed())			{
				bytesRead=in.getInputStream().read(buffer);
 

irgendjemand

Top Contributor
es wäre vielleicht mal von vorteil wenn du mal ALLES posten würdest ... anstatt immer nur methoden- und häppchen weise ... denn so sieht man wirklich nicht wo die fehler stecken ...


was dein [c]in.getInputStream().read(byte[])[/c] angeht : das würd ich lassen ... denn das sieht so aus als ob du dir jedes mal ein neues InputStream objekt vom socket holen würdest *wobei mich mal interessieren würde was "in" und "out" überhaupt für typen haben ...

aber falls es dich beruhigt : hier mal etwas ähnliches ... ein sog. Sniffer ... ist in dem sinne auch nur ein proxy der allerdings den datenverkehr auf dem rechner wo er läuft ausgibt ... nach etwas änderung kann man einen proxy draus bauen

Java:
import java.io.*;
import java.net.*;
import java.util.*;
public class Sniffer
{
	public static void main(String[] args)
	{
		if(args.length==3)
		{
			try
			{
				new Sniffer(Integer.parseInt(args[0]), args[1], Integer.parseInt(args[2]));
			}
			catch(Exception e) { System.out.println("USAGE : java Sniffer LOCALPORT REMOTEHOST REMOTEPORT"); System.exit(1); }
		}
		else
		{
			System.out.println("USAGE : java Sniffer LOCALPORT REMOTEHOST REMOTEPORT");
			System.exit(1);
		}
	}
	protected Sniffer(int PORT, String HOST, int HPORT)
	{
		ServerSocket ss=null;
		try { ss=new ServerSocket(PORT); }
		catch(Exception e) { e.printStackTrace(); System.exit(1); }
		while(true)
		{
			try { Socket cs=ss.accept(); (new SnifferConnection(this, cs, HOST, HPORT)).start(); }
			catch(Exception e) { e.printStackTrace(); }
		}
	}
	protected synchronized void p(byte[] in)
	{
		System.out.println(new String(in));
	}
}
class SnifferConnection extends Thread
{
	private Socket cs=null;
	private String HOST;
	private int PORT;
	private Sniffer main;
	protected SnifferConnection(Sniffer main, Socket cs, String HOST, int PORT) { this.main=main; this.cs=cs; this.HOST=HOST; this.PORT=PORT; }
	public void run()
	{
		Socket ss=null;
		try { ss=new Socket(HOST, PORT); }
		catch(Exception e) { e.printStackTrace(); return; }
		InputStream cin=null;
		InputStream sin=null;
		OutputStream cout=null;
		OutputStream sout=null;
		try
		{
			cin=cs.getInputStream();
			sin=ss.getInputStream();
			cout=cs.getOutputStream();
			sout=ss.getOutputStream();
		}
		catch(Exception e) { e.printStackTrace(); return; }
		int or=-1, ir=-1, ch=-1, i=-1;
		long tt=new Date().getTime();
		long tb=new Date().getTime();
		ByteArrayOutputStream bo=new ByteArrayOutputStream();
		ByteArrayOutputStream bi=new ByteArrayOutputStream();
		try
		{
			while(or!=0 || ir!=0 || (tb-tt)<=3000)
			{
				while((or=cin.available())>0)
				{
					for(i=0; i<or; i++)
					{
						ch=cin.read();
						if(ch!=-1) { sout.write(ch); bo.write(ch); }
					}
					main.p(bo.toByteArray());
					sout.flush();
				}
				while((ir=sin.available())>0)
				{
					for(i=0; i<ir; i++)
					{
						ch=sin.read();
						if(ch!=-1) { cout.write(ch); bi.write(ch); }
					}
					main.p(bi.toByteArray());
					cout.flush();
				}
				if(or==0 && ir==0)
				{
					tb=new Date().getTime();
					this.sleep(200);
				}
			}
		}
		catch(Exception e) { e.printStackTrace(); return; }
		finally
		{
			try
			{
				cin.close();
				sin.close();
				cout.close();
				sout.close();
				ss.close();
				cs.close();
			}
			catch(Exception e) { e.printStackTrace(); return; }
		}
	}
}

ich weis nicht ob der code so noch funktioniert ... ist lange her das ich das geschrieben habe
 

Empire Phoenix

Top Contributor
Die exception kommt erst beim lesen, weil erst dort die gegenstelle nciht reagiert, du musst den socket prüfen die streams und dann kann es trotzdem fehler geben ist halt alles nur netzwerkbasiert.
 

irgendjemand

Top Contributor
hier würde InputStream.available() vielleicht sinn machen ... wobei ... wenn ich die DOC mal zitieren darf

"gibt an wie viele bytes ohne zu blocken vom InputStream gelesen werden können [...] returned bei dateien deren größe in byte"

in der regel gibt aber InputStream.available() bei net-i/o entweder "0" zurück ... weil eben keine daten im buffer sind und somit alle read() methode "blockierend" sind ... es also solange gewartet wird bis daten überhaupt gelesen werden können ... oder eben die anzahl an bytes die noch im buffer liegen und die man dann erstmal ohne fehler lesen kann ...

was genau nun der auslöser ist lässt sich wie gesagt ohne kompletten code und vor allem stacktrace nicht genau sagen
 

Maxim6394

Bekanntes Mitglied
The available method for class InputStream always returns 0.
was bringt mir diese methode dann eigentlich?

ich hab da jetzt ein problem mit google: ich bekomme da immer die anfrage mit
Code:
173.194.69.19.| Port:1187
zu connecten. die ip adresse ist die adresse von google, aber was das für ein port ist versteh ich nicht. wenn man das in den browser eingibt kommt man auf keine seite.

jedenfalls bleibt der code an der stelle mit einer nullpointer exception hängen:
Java:
	out.getOutputStream().write(buffer,0,bytesRead);

der buffer ist:
Code:
5/1/0/1/-83/-62/69/95/1/-69/


hier ist der ganze code vom proxyThread:

Java:
public class ProxyThread extends Thread {


	byte[] buffer=new byte[50000];
	int bytesRead=0;

	Socket in;
	Socket out;
	boolean auth;
	public boolean client=false;
	
	int port=1080;

	
	public ProxyThread(Socket in, Socket out)
	{	

		System.out.println("Thread started");
		this.in=in;
		this.out=out;
	}
	
	public int getUnsignedByte(byte b)
	{
		int intValue=(int)b;
		
		if(intValue<0)
		{
			intValue=b & 0xFF;
			
			return intValue;
		}
		
		return intValue;	
	}
	
	public void printBytes(byte[] buffer, int bytesRead)
	{
		try{
			System.out.println("-------------------");
			for(int i=0;i<bytesRead;i++)
			{
				System.out.print(buffer[i]+"/");			
			}
			System.out.println("");
			System.out.print("|String:|"+new String(buffer,"ASCII"));
			System.out.println("-------------------");	
		}catch(Exception e){System.out.println(e);}
		
	}
	
	public void authenticate()
	{	
	
		try{
			bytesRead=in.getInputStream().read(buffer);
		
			printBytes(buffer,bytesRead);
			
			if(buffer[0]==5)
			{
				
				in.getOutputStream().write(new byte[]{5,0});

				bytesRead=in.getInputStream().read(buffer);
			
				printBytes(buffer,bytesRead);
				
				if(buffer[1]==1)
				{
			
					byte[] host=new byte[bytesRead-6];
					int i;
					StringBuffer hostString=new StringBuffer();
					
					System.out.println("bytesRead:"+bytesRead);
					for( i=4;i<bytesRead-2;i++)
					{		System.out.println(getUnsignedByte(buffer[i])+"|"+(char)buffer[i]);
					
						if(buffer[3]==1)
						{
							hostString.append(String.valueOf(getUnsignedByte(buffer[i]))+".");
							
							host[i-4]=buffer[i];	
						}
						else if(buffer[3]==3)
						{
							hostString.append((char)buffer[i+1]);
						}
							
					}
					in.getOutputStream().write(new byte[]{5,0,0,1,127,0,0,1,10,80});
			
					System.out.println("Host:"+hostString.toString()+"| Port:"+Integer.valueOf(String.valueOf(getUnsignedByte(buffer[bytesRead-2]))+""+getUnsignedByte(buffer[bytesRead-1])));
			
			
					int targetPort=Integer.valueOf(String.valueOf(getUnsignedByte(buffer[bytesRead-2]))+""+getUnsignedByte(buffer[bytesRead-1]));
			
					out=new Socket(hostString.toString(),targetPort);

				
				}
			
			}
					
		}catch(Exception e){e.printStackTrace();}
		
	}
	
	public String byteArrayToString(byte[] bytes)
	{
		StringBuffer s=new StringBuffer();
		
		for(byte b:bytes)
		{	
			s.append(b);
		}
		
		return s.toString();
	}
	
	public void run()
	{
		
		try{
		while(true)
		{					
			sleep(100);
			if(in!=null && out!=null)
			{
		
				try{
					bytesRead=in.getInputStream().read(buffer);	
					
				}catch(Exception e){e.printStackTrace();}
			
				
			}
				
				if(bytesRead>0)
				{	
					
					//System.out.println(bytesRead);
					printBytes(buffer,bytesRead);
					
				try
				{
					out.getOutputStream().write(buffer,0,bytesRead);
					buffer=new byte[50000];
					bytesRead=0;
				}catch(Exception e){e.printStackTrace(); }
						
			}
				else
				{
					if(in!=null)
					{
						in.close();
					}
					if(out!=null)
					{
						out.close();
					}
				
				
					interrupt();
					break;
					
				}
				
				sleep(10);
			

		}	}catch(Exception e){e.printStackTrace();}
	
		
	}

}
 

irgendjemand

Top Contributor
wie ich bereits sagte : immer wieder Socket.get*Stream() ist nun wirklich nicht das beste ...
schau dir mal in meinem code an wie das geht : ein mal die streams holen und dann damit arbeiten

außerdem : kompletter stack ... also nicht nur die info "NPE" ... sondern auch alles was da noch drunter steht

wo der port herkommt kann ich leider auch nicht rauslesen ... dafür ist der code zu verwirrend

warum du dann noch "unsigned" byte haben willst versteh ich auch nicht ... aber du musst da nicht extra *0xFF* schreiben ... es reicht wenn du auf int castest ... das vorzeichen wird nicht verschoben ...

alles in allem : unvollständige fehlermeldung *nur NPE ... das reicht nicht ... wir brauchen schon den kompletten stack* , ziemlich wirrer und unsauberer code ... und auch kein vollständiges KSKB um den fehler zu reproduzieren ...

so kann man dir einfach nicht helfen ... wenn du mit den wichtigen infos nicht rausrückt musst du dich über : "gib mal die infos" nicht wundern ...
 

Maxim6394

Bekanntes Mitglied
also ich hab das ganze ding nochmal neu geschrieben und versucht, es so sauber und ordentlich wie möglich zu halten. hier der ganze code:

[JAVA=17]
public class ProxyServer extends Thread{


int port=1080;
String host="localhost";
ServerSocket serverSocket;
boolean stopLoop=false;

ArrayList <Socket> sockets=new ArrayList<Socket>();

public ProxyServer()
{
try{
this.serverSocket=new ServerSocket(port);
}catch(Exception e){e.printStackTrace();}

System.out.println("Server startred.");

}

public void run()
{
while(stopLoop==false)
{
try{
Socket clientSocket=serverSocket.accept();
SocketThread thread01=new SocketThread(clientSocket,null);
thread01.authenticate();


}catch(Exception e){e.printStackTrace();}



}
}

public static void main(String[] args)
{
new ProxyServer().start();
}


}
[/code]

[JAVA=31]
public class SocketThread extends Thread{

Socket in,out;
InputStream inputStream;
OutputStream outputStream;

String host;
int port;
boolean stopLoop=false;
byte[] buffer=new byte[5000];
int bytesRead=-1;

boolean startThread=true;

public SocketThread(Socket in, Socket out)
{
this.in=in;
this.out=out;

try{
if(in!=null)
{
this.inputStream=in.getInputStream();
}

if(out!=null)
{
this.outputStream=out.getOutputStream();
}
}catch(Exception e){e.printStackTrace();};


}


public void run()
{
while(stopLoop==false)
{
try {
sleep(100);
}catch(Exception e) {}

try{
if((bytesRead=inputStream.read(buffer))==-1)
{
interrupt();
inputStream.close();
break;
}
else
{
if(buffer[0]!=5)
{
printBytes(buffer,bytesRead);
outputStream.write(buffer,0,bytesRead);
buffer=new byte[5000];
bytesRead=0;
}
else
{

}

}

}catch(Exception e){e.printStackTrace(); interrupt(); try{ out.close();in.close();}catch(Exception err){} break; }

}
}


public void connectToTarget(byte[] buffer, Socket targetSocket)
{
byte[] host=new byte[bytesRead-6];
int i;
StringBuffer hostString=new StringBuffer();

System.out.println("bytesRead:"+bytesRead);
for( i=4;i<bytesRead-2;i++)
{

if(buffer[3]==1)
{
hostString.append(String.valueOf(getUnsignedByte(buffer))+".");

host[i-4]=buffer;
}
else if(buffer[3]==3)
{
hostString.append((char)buffer[i+1]);
}

}

int targetPort=Integer.valueOf(String.valueOf(getUnsignedByte(buffer[bytesRead-2]))+""+getUnsignedByte(buffer[bytesRead-1]));

try{
targetSocket=new Socket(hostString.toString(),targetPort);

out=targetSocket;
outputStream=targetSocket.getOutputStream();
SocketThread targetThread=new SocketThread(targetSocket,in);

start();
targetThread.start();

in.getOutputStream().write(new byte[]{5,0,0,1,127,0,0,1,10,80});
}catch(Exception e){e.printStackTrace();}



}
public void authenticate()
{
try{
bytesRead=inputStream.read(buffer);

printBytes(buffer,bytesRead);

if(bytesRead>-1 )
{
if(buffer[0]!=5)
{
System.err.println("no Socks5 client.");
startThread=false;

}
else
{
in.getOutputStream().write(new byte[]{5,0});

bytesRead=in.getInputStream().read(buffer);

printBytes(buffer,bytesRead);

if(buffer[1]==1)
{
connectToTarget(buffer,out);
}
}
}

}catch(Exception e){e.printStackTrace();}
}
public int getUnsignedByte(byte b)
{
int intValue=(int)b;

if(intValue<0)
{
intValue=b & 0xFF;

return intValue;
}

return intValue;

}
public void printBytes(byte[] buffer, int bytesRead)
{
try{
System.out.println("-------------------");
for(int i=0;i<bytesRead;i++)
{
System.out.print(buffer+"/");
}
System.out.println("");
System.out.print("|String:|"+new String(buffer,"ASCII"));
System.out.println("-------------------");
}catch(Exception e){System.out.println(e);}

}
}
[/code]

es funktioniert so lange, bis nach einiger zeit eine exception kommt, aus dem nichts. die gleiche die auch dann kommt wenn ich auf google gehe. das programm bleibt dann wohl stehen und seiten sind nicht mehr aufrufbar.

Code:
java.net.ConnectException: Connection timed out: connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:337)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:198)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
	at java.net.Socket.connect(Socket.java:579)
	at java.net.Socket.connect(Socket.java:528)
	at java.net.Socket.<init>(Socket.java:425)
	at java.net.Socket.<init>(Socket.java:208)
	at SocketThread.connectToTarget(SocketThread.java:129)
	at SocketThread.authenticate(SocketThread.java:169)
	at ProxyServer.run(ProxyServer.java:44)
|String:|5/1/0/1/-83/-62/69/94/1/-69/

in der fehlermeldung ist ganz unten eine verbindungsanfrage vom socks5 client. das ist die ip adresse von google und ein port den ich nichtmal zuordnen kann.

http://www.faqs.org/rfcs/rfc1928.html hat gesagt.:
+----+-----+-------+------+----------+----------+
|VER | CMD | RSV | ATYP | DST.ADDR | DST.PORT |
+----+-----+-------+------+----------+----------+
| 1 | 1 | X'00' | 1 | Variable | 2 |
+----+-----+-------+------+----------+----------+
 
Zuletzt bearbeitet:

Maxim6394

Bekanntes Mitglied
also ich hatte die ganze zeit wohl falsche ports genommen um zu den servern zu connecten. ich dachte wenn da in den array feldern 1 und 187 steht ist der port 1187, aber das ist nicht der fall. ich musste extra durch irgendeinen bytebuffer den port als short kriegen, da kam dann auf einmal 443 raus, was der richtige port ist(der für https).

im browser scheint jetzt also der proxyserver zu funktionieren, aber in proxifier, wo der server von sämtlichen programmen benutzt werden sollte, gehts nicht.

Code:
173.194.69.83.||443
java.net.ConnectException: Connection timed out: connect
-------------------
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:337)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:198)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
	at java.net.Socket.connect(Socket.java:579)
	at java.net.Socket.connect(Socket.java:528)
	at java.net.Socket.<init>(Socket.java:425)
	at java.net.Socket.<init>(Socket.java:208)
	at SocketThread.connectToTarget(SocketThread.java:134)
	at SocketThread.authenticate(SocketThread.java:194)
	at ProxyServer.run(ProxyServer.java:44)

das ist eine der adressen die reinkommt, wo ich hin connecten sollte. die adresse und der port müssen richtig sein, aber da kommt immer nur diese exception. das passiert bei allen verbindungen, zum beispiel wenn ich zu 87.230.59.88:80 connecten will, was ohne probleme geht wenn man es im browser eingibt.
java.net.ConnectException: Connection timed out: connect

hier ein screenshot von proxifier:

_.jpg - Bilder und Fotos kostenlos auf ImageBanana hochladen
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Java Proxyserver schreiben? Netzwerkprogrammierung 19
N Systemeinstellung Proxyserver auslesen Netzwerkprogrammierung 2
B Proxyserver Netzwerkprogrammierung 3
M SOAP & Performance? Netzwerkprogrammierung 14
N HTTP Performance vonURL.openStream() Netzwerkprogrammierung 4
K Problem Performance Client-Server Netzwerkprogrammierung 5
nambrot Socket Performance erhöhen? Netzwerkprogrammierung 4
T Performance meiner Idee Netzwerkprogrammierung 2
H Frage zur Performance Netzwerkprogrammierung 10
C RMI Performance u Belastbarkeit Netzwerkprogrammierung 3
G Performance einer verteilten RMI-Anwendung Netzwerkprogrammierung 4
D Performance Problem beim File senden, empfangen Netzwerkprogrammierung 4
I Socket Problem mit den WebSocket Antworten der Discord API Netzwerkprogrammierung 0
K Java Websocketserver Problem | Android to Pi Netzwerkprogrammierung 1
C RMI Produzent-Verbraucher-Problem - Code review Netzwerkprogrammierung 12
B Socket Bilder verschicken via Sockets. Heap-Problem. Netzwerkprogrammierung 2
S Problem bei dem Bluetoothverbindungsaufbau Netzwerkprogrammierung 2
G Server-Client IO Problem Netzwerkprogrammierung 6
M Netty - TCP Problem Netzwerkprogrammierung 4
L Socket Problem mit Server Netzwerkprogrammierung 1
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
M Problem bei Socket (MultiplayerSpiel) Netzwerkprogrammierung 4
M Socket CDI, Websocket reference Problem ! Netzwerkprogrammierung 2
Shams Problem mit Eventbus in Verbindung mit Server Netzwerkprogrammierung 0
G apache httpClient Problem. Netzwerkprogrammierung 5
H Problem mit ObjectStreams Netzwerkprogrammierung 3
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
D Socket BufferedWriter/Reader Problem Netzwerkprogrammierung 1
Maxim6394 Problem mit Socks5 Implementierung Netzwerkprogrammierung 0
C Handle Connection Problem Netzwerkprogrammierung 3
E HttpUrlConnection Cookie Problem Netzwerkprogrammierung 0
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
O 4Gewinnt Multiplayer - Netzwerk Problem (TCP) Netzwerkprogrammierung 1
A Socket Socket-Problem - Object wird nicht übertragen Netzwerkprogrammierung 3
R Problem beim Programmieren eines Chatprogramms Netzwerkprogrammierung 5
E einfaches Problem: Session-Handling bei Servlets Netzwerkprogrammierung 5
G Problem mit einem FileWatcher Netzwerkprogrammierung 7
T Socket Server starten Thread Problem Netzwerkprogrammierung 12
B Client/Server Connection Problem Netzwerkprogrammierung 2
G Problem mit STATIC-Verständnis Netzwerkprogrammierung 8
S Umstellung AS400 auf Postgre - Problem beim Arbeiten mit Metadaten Netzwerkprogrammierung 2
J Facelets Include Rendered Problem Netzwerkprogrammierung 2
J Socket Problem mit C++/Java Netzwerkprogrammierung 20
P Problem mit Datagram-Sockets Netzwerkprogrammierung 2
G Socket NIO2 Problem mit AsynchronousSocketChannel beim Schließen Netzwerkprogrammierung 3
G Cookie Verwaltungs Problem nach Login auf InetSeite (Wo utma-Cookie?) Netzwerkprogrammierung 18
C Socket Problem mit ObjectInput/OutputSream Netzwerkprogrammierung 7
B Socket Problem mit Netzwerkchat Netzwerkprogrammierung 21
D RMI Problem beim shutdown von verteilter CORBA-Anwendung Netzwerkprogrammierung 6
Maxim6394 ipv6 Problem Netzwerkprogrammierung 2
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
C Socket Problem mit ObjectInput/OutputSream Netzwerkprogrammierung 5
B RMI und Problem mit rmic-Tool Netzwerkprogrammierung 3
C FTP storeFileStream Problem Netzwerkprogrammierung 3
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
D JavaMail - Mailsabrufen Problem (imap) Netzwerkprogrammierung 12
J HTTP Übersetzung yahoo babelfish - Zeichensatz-Problem Netzwerkprogrammierung 6
D Apache CXF, JAX-WS Problem bei Arrays - einfacher Server Netzwerkprogrammierung 2
M Problem beim Datenempfang Netzwerkprogrammierung 2
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
M Problem mit Socket-Verbindung Netzwerkprogrammierung 2
N NIO Problem beim speziellen Behandeln von einzelnen Benutzern Netzwerkprogrammierung 13
D Thread problem Netzwerkprogrammierung 3
T Servlets JSP: Tomcat Problem Netzwerkprogrammierung 4
K Client - Server Problem Netzwerkprogrammierung 16
T RMI Problem Client-Server Netzwerkprogrammierung 2
P RMI Stub Problem Netzwerkprogrammierung 3
D Socket UDP Übertragungs Problem Netzwerkprogrammierung 7
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 2
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 6
D Problem mit ObjectInputStreams Netzwerkprogrammierung 10
D Socket Problem mit InputStreamReader Netzwerkprogrammierung 3
N CRC32 CheckSum Problem bei UDP Netzwerkprogrammierung 2
V Java Mail Api - IMAP Problem Netzwerkprogrammierung 6
P RMI Problem Netzwerkprogrammierung 4
I Problem bei Outputstreamerzeugung in anderer Klasse als Socket Netzwerkprogrammierung 5
S Socket Problem mit Objektübertragung Netzwerkprogrammierung 16
Shoox Reader / Writer Problem Netzwerkprogrammierung 2
S Problem mit 2 Serversockets unter Win XP Netzwerkprogrammierung 7
P Socket Problem mit Netzwerkverbindung über TCP Netzwerkprogrammierung 12
M RMI - Connection Problem Netzwerkprogrammierung 7
J Socket Client - Server Problem Netzwerkprogrammierung 4
M Socket Chat-Client-Problem Netzwerkprogrammierung 8
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
E HTTP Problem beim Auslesen von Websiten Netzwerkprogrammierung 6
T Problem bei Findung der richtigen Architektur Netzwerkprogrammierung 3
AlexSpritze Authentication Problem bei WebServices Netzwerkprogrammierung 4
J Socket Problem -Proxies Netzwerkprogrammierung 2
R HTTP Problem bei Authentifizierung über (Http)UrlConnection Netzwerkprogrammierung 2
F Konzept Problem Netzwerkprogrammierung 12
G NIO Sockets Architektur Problem Netzwerkprogrammierung 2
H Neues NIO problem nachricht an alle clients Netzwerkprogrammierung 3
J Client server problem Netzwerkprogrammierung 3
S Problem bzgl. Sockets / Server-Client-Struktur Netzwerkprogrammierung 3
W RMI Problem Netzwerkprogrammierung 4
M Problem mit Server Netzwerkprogrammierung 5
N Socket Java server c# client problem Netzwerkprogrammierung 7
Y Problem mit ObjectInputStream beim lesen vom Socket Netzwerkprogrammierung 10
R RMI Hibernate Problem Netzwerkprogrammierung 4
Z RMI Problem Netzwerkprogrammierung 11

Ähnliche Java Themen

Neue Themen


Oben