Problem mit Server

M

MacMan

Gast
Hallo zusammen, ich habe einen Proxyserver in Java geschrieben. Er besteht aus zwei Teilen, ein lokaler Proxyserver und einer im Netz. Beim Testen mit den beiden (beide lokal ausgeführt) funktioniert alles wie gewünscht. Wenn ich jetzt jedoch den einen auf einen anderen Server verlagere, funktioniert plötzlich nichts mehr oder nur sehr unregelmässig. Worin könnte das Problem liegen?? Der Testcomputer ist ein Mac und der Server ein Windows. Liegt darin das Problem? Oder darin, dass die Sendezeiten beim lokalen geringer sind als wenn der Server im Internet ist?
Liebe Grüsse und vielen Dank im Voraus..
 
G

Gelöschtes Mitglied 5909

Gast
Schenk uns eine Glaskugel und eventuell kann dir dann jemand Helfen

funktioniert plötzlich nichts mehr oder nur sehr unregelmässig.

Was geht nicht? Ging es überhaupt mal richtig?
Hats du die Ports geforwarded?

Code? Exceptions? Mehr Infos?
 
M

MacMan

Gast
es GIBT keine exception das ist ja das Problem!!!!! Das einzige was mir angezeigt wird ist die Meldung vom Browser dass ein ungültiges Format der Kodierung gewählt wurde bei Seiten, die komprimiert sind und bei unkomprimierten Seiten wird nur die Hälfte (jedes Mal ein anderer Teil!) geladen und Bilder sind nach der Hälfte nur noch Schwarz etc.........
 
M

MacMan

Gast
Ach ja, hier noch der Code für den Proxy auf dem fremden Computer bei dem das Problem "vielleicht" auftritt:

Java:
	SocketChannel			clientSocket;
	SocketChannel			remoteSocket;
	
	Selector				selector;
	SelectionKey			clientkey;
	SelectionKey			remotekey;
	
	Charset					charset;
	CharsetEncoder			encoder;
	CharsetDecoder			decoder;
	ByteBuffer				buffer;
	int						bytesread					= 0;
	
	String					header						= "";
	
	int						protocolStatus				= 0;
	
	public static final int	START						= 0;
	public static final int	CONNECT_HEADER_RECEIVING	= 1;
	public static final int	REDIRECTING_TRAFFIC			= 2;
	public static final int	CLOSED						= 3;
	
	/**
	 * @param remoteHost
	 * @param remotePort
	 */
	public Acceptor(SocketChannel clientSocket) {
		super("Client[" + clientSocket.socket().getLocalPort() + "]");
		try {
			charset = Charset.forName("UTF-8");
			encoder = charset.newEncoder();
			decoder = charset.newDecoder();
			buffer = ByteBuffer.allocate(1024);
			
			selector = Selector.open();
			this.clientSocket = clientSocket;
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	@Override
	public void run() {
		try {
			clientkey = clientSocket.register(selector, SelectionKey.OP_READ);
			
			remotekey = null;
			
			protocolStatus = START;
			
			protocolStatus = CONNECT_HEADER_RECEIVING;
			
			for (;;) {
				selector.select();
				Set<SelectionKey> keys = selector.selectedKeys();
				
				for (Iterator<SelectionKey> i = keys.iterator(); i.hasNext();) {
					SelectionKey key = (SelectionKey) i.next();
					i.remove();
					
					if (protocolStatus == CLOSED) { return; }
					
					if (key == clientkey) {
						if (!key.isReadable()) {
							continue;
						}
						try {
							bytesread = clientSocket.read(buffer);
						} catch (IOException e) {
							close();
							continue;
						}
						
						if (bytesread == -1) {
							close();
							continue;
						}
						buffer.flip();
						// System.out.print(decoder.decode(buffer));
						// buffer.flip();
						
						try {
							clientDataRead();
						} catch (Exception e) {
							e.printStackTrace();
						}
						
						buffer.clear();
					}
					if (key == remotekey) {
						if (!key.isReadable()) {
							continue;
						}
						
						try {
							bytesread = remoteSocket.read(buffer);
						} catch (IOException e) {
							close();
							continue;
						}
						if (bytesread == -1) {
							close();
							continue;
						}
						buffer.flip();
						// System.out.print(decoder.decode(buffer));
						// buffer.flip();
						
						try {
							remoteDataRead();
						} catch (Exception e) {
							e.printStackTrace();
						}
						
						buffer.clear();
					}
				}
				
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	public void close() throws IOException {
		if (remoteSocket != null) {
			remoteSocket.close();
		}
		// clientSocket.close();
		if (remotekey != null) {
			remotekey.cancel();
		}
		clientkey.cancel();
		
		clientkey = null;
		remotekey = null;
		
		protocolStatus = CLOSED;
	}
	
	public void clientDataRead() throws Exception {
		if (protocolStatus == CONNECT_HEADER_RECEIVING) {
			// Header empfangen
			handleRequest(decoder.decode(buffer).toString());
		} else if (protocolStatus == REDIRECTING_TRAFFIC) {
			if (remotekey != null) {
				if (!remoteSocket.socket().isClosed()) {
					remoteSocket.write(buffer);
				}
			}
		}
	}
	
	public void handleRequest(String request) throws IOException {
		// Wenn der Header noch nit abgeschlossen ist...
		if (request.indexOf(";") < 0) {
			header += request;
		} else {
			String data = request.substring(request.indexOf(";") + 1);
			header += request.substring(0, request.indexOf(";"));
			header.replace("&&", "&");
			header.replace("&s", ";");
			handleHeader();
			
			// Wenn im Anschluss auf den Header bereits Daten empfangen wurden, diese an den Remotehost weiterleiten...
			if (data.length() > 0) {
				try {
					// Thread.sleep(300);
				} catch (Exception e) {
				}
				
				clientSocket.write(encoder.encode(CharBuffer.wrap(data)));
			}
		}
	}
	
	public void handleHeader() throws IOException {
		if (header.startsWith("CONNECT")) {
			String[] parts = header.split(" ");
			
			String host = parts[1].trim();
			int port = 0;
			if (host.indexOf(":") >= 0) {
				port = Integer.parseInt(host.substring(host.indexOf(":") + 1));
				host = host.substring(0, host.indexOf(":"));
			}
			
			remoteSocket = SocketChannel.open(new InetSocketAddress(host, port));
			remoteSocket.configureBlocking(false);
			remotekey = remoteSocket.register(selector, SelectionKey.OP_READ);
			
			String command = "200 Connection established;";
			try {
				// Thread.sleep(300);
			} catch (Exception e) {
			}
			
			clientSocket.write(encoder.encode(CharBuffer.wrap(command)));
			
			protocolStatus = REDIRECTING_TRAFFIC;
		} else if (header.startsWith("PING")) {
			String command = "100 Proxy Service available;\n";
			try {
				// Thread.sleep(300);
			} catch (Exception e) {
			}
			clientSocket.write(encoder.encode(CharBuffer.wrap(command)));
			
			protocolStatus = CLOSED;
			close();
		}
		
	}
	
	public void remoteDataRead() throws IOException {
		if (!clientSocket.socket().isClosed()) {
			try {
				// Thread.sleep(300);
			} catch (Exception e) {
			}
			clientSocket.write(buffer);
		} else {
			close();
		}
	}
 

madboy

Top Contributor
Java:
public void remoteDataRead() throws IOException {
        ...
            clientSocket.write(buffer);
        ...
:autsch:

Java:
handleRequest(decoder.decode(buffer).toString());
...
clientSocket.write(encoder.encode(CharBuffer.wrap(data)));
Ähm. Du schreibst, bei gepackten Daten bekommst du Probleme? Gepackte Daten sind binär und binär != String.

Alles in allem würde ich sagen: Nix umwandeln in deinem Proxy (außer, du weißt genau was du tust).
Für erste Tests lass erst mal die ganzen zusätzlichen Dinge aus dem Proxy raus und leite nur Streams weiter. Im Stil von
lese x Bytes von SocketInputStream
schreibe x Bytes in anderen SocketOutputStream
 
M

MacMan

Gast
hmm.. aber dies löst noch immer nicht die frage warum wenn ich die ganze sache lokal laufen lasse ohne probleme funktioniert.. mit dem SELBEN quellcode..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Server-Client IO Problem Netzwerkprogrammierung 6
L Socket Problem mit Server Netzwerkprogrammierung 1
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
Shams Problem mit Eventbus in Verbindung mit Server Netzwerkprogrammierung 0
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
T Socket Server starten Thread Problem Netzwerkprogrammierung 12
B Client/Server Connection Problem Netzwerkprogrammierung 2
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
D Apache CXF, JAX-WS Problem bei Arrays - einfacher Server Netzwerkprogrammierung 2
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
K Client - Server Problem Netzwerkprogrammierung 16
T RMI Problem Client-Server Netzwerkprogrammierung 2
J Socket Client - Server Problem Netzwerkprogrammierung 4
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
J Client server problem Netzwerkprogrammierung 3
S Problem bzgl. Sockets / Server-Client-Struktur Netzwerkprogrammierung 3
N Socket Java server c# client problem Netzwerkprogrammierung 7
W vista / win server 2003 netzlaufwerk problem Netzwerkprogrammierung 4
K Problem Performance Client-Server Netzwerkprogrammierung 5
M Server Problem Netzwerkprogrammierung 3
W Problem mit Server/Client mit ObjectOutputStream Netzwerkprogrammierung 5
S RMI-Problem: Nur ein Server start möglich. Netzwerkprogrammierung 40
S Client-Server Chat Problem nur im lokalen Netztwerk Netzwerkprogrammierung 23
U problem mit verbindung zu einem irc server Netzwerkprogrammierung 3
K Client-Server Problem Netzwerkprogrammierung 2
G Problem bei Server verbindung : ( Netzwerkprogrammierung 8
G Problem mit Client-Server Kommunikation Netzwerkprogrammierung 4
S Client/Server Problem Netzwerkprogrammierung 2
A Client Server Problem Netzwerkprogrammierung 37
G Problem bei Objekt senden von server zu client Netzwerkprogrammierung 6
J Kleines Problem mit Chat Server Netzwerkprogrammierung 2
L ganz ganz einfach Client/Server [Problem] Netzwerkprogrammierung 2
S problem mit server Netzwerkprogrammierung 2
R Java Applikation als Client ,Servlet als Server: Problem? Netzwerkprogrammierung 3
V Client Server Problem, empängt oder sendet nichts Netzwerkprogrammierung 4
M HttpUrlConnection + Client/Server Problem Netzwerkprogrammierung 2
S Problem mit der Client Server Netzwerkprogrammierung 6
S Habe ein Problem mit Sockets -> Client Server Netzwerkprogrammierung 2
G Datenautausch Client/Server , hab da ein kleines problem Netzwerkprogrammierung 3
S RMI Server Basic Problem Netzwerkprogrammierung 13
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
M Netty - TCP Problem Netzwerkprogrammierung 4
M Problem bei Socket (MultiplayerSpiel) Netzwerkprogrammierung 4
M Socket CDI, Websocket reference Problem ! Netzwerkprogrammierung 2
G apache httpClient Problem. Netzwerkprogrammierung 5
H Problem mit ObjectStreams Netzwerkprogrammierung 3
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
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
Maxim6394 Proxyserver Performance Problem Netzwerkprogrammierung 11
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
M Problem beim Datenempfang Netzwerkprogrammierung 2
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
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
M Socket Chat-Client-Problem Netzwerkprogrammierung 8
E HTTP Problem beim Auslesen von Websiten Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben