2016-04-05 4 views
0

Ich erstelle einen Java-HTTP-Server, der überprüft, um sicherzustellen, dass ein Client nicht gebannt wird, bevor auf den Hauptserver umgeleitet wird. Ich habe bereits alles für den Server erstellt, der benötigt wird, ich weiß nur nicht, wie ich auf einen anderen Port umlenke, auf dem der Hauptserver läuft. Hier ist mein Code:Redirect-Client in Java-Run-Server

package netlyaccesscontrol; 

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.net.ServerSocket; 
import java.net.Socket; 


public class AllowedCheck { 
    public static void main(String[] args) { 
     String line = null; 
     try { 
      FileReader reader = new FileReader("Banned.txt"); 
      BufferedReader buffer = new BufferedReader(reader); 
      ServerSocket s = new ServerSocket(80); 
      Socket c = s.accept(); 
      String clientIP = c.getInetAddress().toString(); 
      while ((line = buffer.readLine()) != null) { 
       if (clientIP == line) { 
        s.close(); 
       } else { 
        // redirect to main server here 
       } 
      } 
     } catch (FileNotFoundException ex) { 
      System.out.println("The banned IP address file does not exist."); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 

Antwort

0

Die Umleitung, die Sie denken, ist etwas von HTTP und den Browsern unterstützt. Es gibt einen spezifischen HTTP-Antwortcode, der den Anrufer anweist, ihn umzuleiten, und eine Möglichkeit, ihn anzugeben.

Raw-Sockets sind ein Low-Level-Netzwerkprotokoll, das die Weiterleitung nicht wie erwartet unterstützt. Das meiste, was Sie möglicherweise tun können, ist, dass dieses Programm ein Proxy ist und nach erfolgreichem Erfolg alle eingehenden Daten/ausgehenden Antworten zum/vom ultimativen Server überträgt. Aber was Sie hier haben, wird es keineswegs schneiden.