我有一个服务器,它的端口80被HTTP事务占用。我想查看该端口中的流量,并尝试使用套接字程序来侦听该端口。
public Server(int serverPort) throws IOException {
super(serverPort);
try {
while (true) {
Socket socket = accept();
new ServerThread(socket);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
close();
}
}
// inner-class ServerThread
class ServerThread extends Thread {
private Socket socket;
private BufferedReader in;
private PrintWriter out;
// Ready to conversation
public ServerThread(Socket s) throws IOException {
this.socket = s;
in = new BufferedReader(new InputStreamReader(socket
.getInputStream(), "UTF-8"));
out = new PrintWriter(socket.getOutputStream(), true);
start();
}
// Execute conversation
public void run() {
try {
// Communicate with client until "bye " received.
while (true) {
String line = in.readLine();
if (line == null || "".equals(line.trim())) {
break;
}
System.out.println("Received message: " + line);
out.println(line);
out.flush();
}
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException {
new Server(80);
}
但是,当我运行java应用程序时,它显示了一个已经在使用BindException: Address。
那么,我应该如何处理我的代码并使其侦听端口80,或者在Java中有其他方法侦听该端口吗?
发布于 2018-10-20 05:41:04
如果我理解正确的话,您正在尝试嗅探正在传递到您的服务器的数据包。如果是这样的话,在this post中有一些答案。
发布于 2018-10-20 05:07:00
您在哪台服务器上运行它?
这完全取决于您正在使用的服务器的类型。例如,Tomcat在Server.xml文件中有它运行的端口类型。
发布于 2020-04-17 17:11:48
在Windows中,您可以由管理员运行您的程序。在Linux中使用root用户。
https://stackoverflow.com/questions/52899872
复制相似问题