本人学生,初次使用云服务器,在云服务器的Tomcat webapp下部署了一个web项目,其中包含ServletContextEvent的实现类,是绑定了20000端口进行监听进行socket通信的,这个项目在我的本地tomcat跑起来通过telnet访问:localhost 20000是可以通的,我在通过终端在云服务器本地telnet了一下似乎也能通,但是在我的本地访问云服务器的20000端口 telnet [我的公网地址] 20000 连接失败,请问这是为什么?另:我访问tomcat的8080端口是可以通的,之前tomcat部署的几个web项目也能成功访问。
不是很了解Web具体的知识,恳求解答,感激!
另附该类代码:
package socketJ;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class TomcatServer implements ServletContextListener {
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
// final boolean exit=true;
Thread thread =new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
try {
ServerSocket server=new ServerSocket(20000);
while(true){
Socket serverSocket =server.accept();//用新线程来开启是为了防止Tomcat监听器启动时被堵塞。
OutputStream OS=serverSocket.getOutputStream();
PrintWriter pw=new PrintWriter(OS);
pw.write("收到客户端消息");
pw.flush();
serverSocket.close();
serverSocket=null;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
thread.start();
}
}
相似问题