我阅读了一些关于ServerSocket的资料并尝试在端口80上进行监听并打印例如我在网络浏览器中打开的网站的InetAddress,但我的程序无法执行此操作。我的代码:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Site implements Runnable {
private int port;
Site(int port){
this.port = port;
}
public void run() {
try {
ServerSocket server = new ServerSocket(port);
while(true){
Socket socket = server.accept();
System.out.println(socket.getInetAddress());
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String args[]){
Thread thread = new Thread(new Site(80));
thread.start();
}
}
当我运行我的程序时,我只有一次在while循环中并且程序不会打印System.out.println(socket.getInetAddress())
,因此当我打开我的Web浏览器并访问http站点时,我看不到任何输出。你知道我做错了什么吗?你知道如何打印当前开放网站的InetAddress吗?任何材料都会欣赏。
答案 0 :(得分:0)
如果没有适当的声誉我就无法发表评论,所以请原谅我把所有东西扔到这里:
你可能已经在端口80上听了一些东西
您可能正在运行的Linux版本上限制非root进程绑定到1024以上的端口
您可能被软件防火墙阻止