在云服务器上通过Tomcat运行的Socket服务器程序怎么访问?

  • 回答 (0)
  • 关注 (0)
  • 查看 (123)

本人学生,初次使用云服务器,在云服务器的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();

}

}

用户4939436用户4939436提问于

可能回答问题的人

  • 腾讯云计算产品团队

    腾讯云 · 产品团队 (已认证)

    140 粉丝0 提问0 回答
  • CVM 产品团队

    28 粉丝0 提问7 回答
  • 小仙女和科学家

    9 粉丝0 提问0 回答
  • 怕冷的阳阳

    腾讯云 · 高级工程师 (已认证)

    20 粉丝1 提问0 回答
  • DRRR

    腾讯云 · 产品经理 (已认证)

    7 粉丝0 提问4 回答
  • candyxiao

    腾讯 · 高级产品经理 (已认证)

    14 粉丝0 提问7 回答

扫码关注云+社区

领取腾讯云代金券