加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在学校关闭端口的网络

发布时间:2020-12-14 05:24:13 所属栏目:Java 来源:网络整理
导读:我在高中教一个介绍编程课程,我正在为我的学生提供一个网络项目.我认为让他们做一个战舰型游戏将是非常可行的,我认为他们真的会被关注.我可以使用家用电脑上的插座做这件事,但在学校,所有的港口都是关闭的,而且他们并没有为我开放. 有没有工作(像有一个Web服
我在高中教一个介绍编程课程,我正在为我的学生提供一个网络项目.我认为让他们做一个战舰型游戏将是非常可行的,我认为他们真的会被关注.我可以使用家用电脑上的插座做这件事,但在学校,所有的港口都是关闭的,而且他们并没有为我开放.

有没有工作(像有一个Web服务处理中转信息)?有任何想法吗?

(课程是基础的,学生没有太多的背景 – 我需要尽可能简化).

解决方法

这个servlet应该在评论中发布的广告中工作(没有测试过):

发送带有URL参数的消息和消息

接收一个消息与get(接收方id).返回消息,如果没有消息,则返回消息.应该使用浏览器进行测试.

在现实世界中,获取请求不应该真正改变服务器的状态.我只会运行这个课程的时间,因为任何人都可以发送任何id,任何人都可以读取任何id的东西.

public class SimpleMessageServlet extends HttpServlet {
  private Map<String,String> messages = new HashMap<String,String>();

  public void doGet(HttpServletRequest request,HttpServletResponse response) 
       throws ServletException,IOException {
    String to = request.getParameter("to");
    String message = request.getParameter("message");
    if (to != null && from != null && message != null) {
      messages.put(to,message);
    }
    response.setContentType("text/plain");
    String get = request.getParameter("get");
    if (get != null) {
      String result = messages.remove(get);
      if (result != null) {
        PrintWriter out = response.getWriter();
        out.println(result);
      }
    }
 }

编辑:简化为每个地址只存储一个消息,对于基于回合的游戏应该是足够的,缓冲只会增加客户端逻辑的复杂性(清除以前的匹配中的过时的转换数据等).可能有意义的是,以某种方式同步客户端,例如在发送转发之前发送“开始”信号,并在收到“开始”之前丢弃任何信息.令人遗憾的是,这将需要轮询,使用对等套接字将会更好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读