我正在创建一个Java HTTP服务器,它会检查以确保在重定向到主服务器之前不禁止客户端。我已经为所需的服务器创建了所有内容,我只是不知道如何重定向到另一个运行主服务器的端口。这是我的代码:
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();
}
}
}
答案 0 :(得分:0)
您正在考虑的重定向是HTTP和浏览器支持的。有一个特定的HTTP响应代码,告诉调用者重定向以及指定它的方法。
原始套接字是一种低级网络协议,不会像您期望的那样支持重定向。您可以做的最多就是将此程序作为代理,并在成功时将所有传入的数据/传出响应推送到最终服务器或从最终服务器推送。但你在这里所拥有的绝不是削减它。