Java 与学校的封闭端口联网

Java 与学校的封闭端口联网,java,networking,port,Java,Networking,Port,我在一所高中教一门编程入门课,我正试图为我的学生们提供一个网络项目。我想让他们做一个战舰类型的游戏是非常可行的,我想他们会为此感到兴奋。我可以用家里电脑上的插座很好地做到这一点,但在学校,所有的端口都是关闭的,它们不会为我打开 是否有变通方法(例如,有一个web服务处理转发信息)?有什么想法吗 (该课程是基础课程,学生没有太多背景知识-我需要尽可能简化它)。此servlet应该按照评论中的广告工作(尚未测试): 使用URL参数将消息发送到和消息 接收带有get(接收方id)的消息。返回消息,如果

我在一所高中教一门编程入门课,我正试图为我的学生们提供一个网络项目。我想让他们做一个战舰类型的游戏是非常可行的,我想他们会为此感到兴奋。我可以用家里电脑上的插座很好地做到这一点,但在学校,所有的端口都是关闭的,它们不会为我打开

是否有变通方法(例如,有一个web服务处理转发信息)?有什么想法吗


(该课程是基础课程,学生没有太多背景知识-我需要尽可能简化它)。

此servlet应该按照评论中的广告工作(尚未测试):

使用URL参数
将消息发送到
消息

接收带有
get
(接收方id)的消息。返回消息,如果没有,则不返回任何消息。应该可以通过浏览器进行测试

在现实世界中,get请求不应该真正改变服务器的状态。我只会在上课的时候运行它,因为任何人都可以将内容发送到任何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);
      }
    }
 }
公共类SimpleMessageServlet扩展了HttpServlet{
私有映射消息=新HashMap();
public void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
字符串to=request.getParameter(“to”);
字符串消息=request.getParameter(“消息”);
if(to!=null&&from!=null&&message!=null){
消息。放入(到,消息);
}
response.setContentType(“文本/普通”);
字符串get=request.getParameter(“get”);
if(get!=null){
字符串结果=消息。删除(获取);
如果(结果!=null){
PrintWriter out=response.getWriter();
out.println(结果);
}
}
}

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

你是说在单个计算机上关闭所有端口?还是在防火墙上关闭所有端口。如果你连接到内部连接,它们可能没有关闭端口。如何在学校阻止所有套接字?甚至在局域网内?你有吗访问web?如果是这样,您可以在appengine(或类似)上安装一个简单的服务器让您通过url发布消息,例如
http://myserver?from=foo&to=bar&msg=Mymessage
并以发件人为前缀逐行从其他人处发回消息。只需轮询,省略To和msg参数。可以在浏览器中进行测试,协议非常简单,可以通过Socket或http clientsOff topic实现,但是,有人请帮助这位老师。如果我高中时的老师做了任何接近这一酷的事情,那门课会做得更好。相反,我们练习在纸上写代码,并在全班面前背诵。感谢你让学习变得有趣:-)所有端口都关闭了?请更准确地说。你至少可以访问com吗mon和共享存储驱动器?如果是的话,你可以使用它来制作一个基本的基于文本文件的游戏。但是我还是不确定你的“所有端口都关闭了”。