如何制作我的Java" studyFrame"服务器程序(使用我的iMac)可用于互联网上的所有客户端计算机吗?

时间:2017-06-30 09:28:08

标签: java macos server client-server web-hosting

snap shot of two client studyFrames running : drawing on the left(black) is replicated on the other client (blue) -please zoom to check

  • 我构建了这个服务器 - 客户端程序,客户端在其中绘制了他/她的窗格,并且更改被复制到其他客户端的study框架
  • 基本上我想在真正的互联网(不是本地网络)中测试我的客户端 - 服务器程序,这样我和我的朋友(在另一个城市)应该能够使用这个客户端 - 服务器程序。

  • 我希望我的Java服务器程序可以在互联网上使用,我相信有两种方法可以将我的iMac转换为Web服务器,另一种方法是使用网络托管服务。

  • iMac mac OS Sierra删除了个人虚拟主机,因此我无法打开它,而且StackOverflow上讨论的所有文章都已陈旧,因此这些解决方案对我的Mac无效。

我的问题是: -

1)如果我想将自己的iMac转换为服务器(通过互联网),我该怎么做(考虑最新的mac OS sierra)不购买 mac OS服务器软件?< / p>

2)是否有免费托管网站允许我托管Java服务器程序(不是网站)。请提及有关如何在该站点上传我的Java服务器程序并使其可用于每个客户端程序的所有详细步骤,因为我不熟悉该领域!

3)如果我为我的iMac购买 mac os服务器软件,我的目的是让每个人都可以使用java服务器程序(mac / windows)互联网?

以下是我的Java服务器客户端线程处理程序代码的一小部分,以获取透视图:

     public Handler(Socket socket,int id) {
        this.socket = socket;
       try{ socket.setTcpNoDelay(true);}catch(Exception l) { }
        ID=id;

        //input=new Object[1000];
        try{
         if(out==null)
            {
            // System.out.println("trying to open output streams");
         out = new ObjectOutputStream(socket.getOutputStream());
         //System.out.println("ADDED WRITER....."+"setting requester no="+(frame.w_count+1));
      w_count++;  writers[w_count]=out;out.flush();writers[w_count].flush(); requester=w_count; count++;
       }

        if(in==null){
            //System.out.println("trying to open input streams");
         in = new ObjectInputStream(socket.getInputStream());}

    // System.out.println("opened input stream successfully");



        }catch(Exception k) { System.out.println(k.toString());}
    }



     public void server_out(Object[] inp)
     {


      try{
                int o=0;
                Object[] inpClone=Arrays.copyOf(inp,store);
                    int str=store;
                    store=0;
                for (int u=0;u<(w_count+1);u++) {
                    //System.out.println("sending object to client");

                   //System.out.println("THIS.ID="+this.ID+" and w_count is ="+w_count);

                     if(u!=updateFrom) {writers[u].writeObject(inpClone);
                                      writers[u].flush();}

                     //System.out.println("object sent to client"+u);
                     }





                }catch(Exception k) {System.out.println(k.toString()); }









     }
    public void run() {
        try {

            while(true)
            {

                //System.out.println("RUNNING FROM CLIENT "+requester);

                int o=0;

              synchronized(writers)
               {     
                synchronized(in)
                 {

              //System.out.println("No client update pending");
                    String handOver="#dataHandOver"; 
                  //  System.out.println("Asking Client No. "+requester+" for hand over..");
                     writers[requester].writeObject(handOver);

                    // System.out.println("Trying to read objects from Client No. "+requester);
                    Object test=in.readObject();
                    if(test!=null)
                    {
                    Object rec[]=(Object[])test;
                         input=rec;
                    //System.out.println("creating array upto="+c);
                         //store=c;
                         store=rec.length;
                         updateFrom=requester;
                         server_out(input);

                     }
                        // System.out.println("data dumped");
                    //}
                    //else in.readObject();

            writers[requester].flush();       




                 }
              }
          }

        } catch (Exception e) {
            System.out.println(e);
        } finally {

            System.out.println("came to finally");

            if (out != null) {
                //writers.remove(out);
            }
            try {
               socket.close(); System.exit(0);
            } catch (IOException e) {
            }
        }
    }
}
    }

0 个答案:

没有答案