本人第一次进行网络编程,认识有限。
我写了一个游戏棋程序,要求各个玩家之间有信息交流和棋盘的更新。当玩家加入游戏时候,服务端会创建一个线程为其进行服务,然后自始自终客户端和服务端都在这个线程上进行信息传递,直到游戏结束。
比如说我写了一个线程类MyThread,当玩家加入时候应该是创建一个线程并开始服务监听,new MyThread(s).start();
这样我可以处理一个玩家的跟服务器的交互。当我想多个玩家游戏,每个人都会从服务端分配到一个线程,那就需要一个线程组,那么在我的主类里应该怎么操作,比如如何声明这个线程组,怎么去实例化。
因为玩家之间要有交流比如玩家1棋子移动了,移动信息就要通过服务器传给其他所有玩家,这个过程就需要能够标记区分不同的玩家,传递信息的时候还要传参表示是哪个玩家的信息,不知道这怎么实现呢。

解决方案 »

  1.   

    我的方法是这样的,客户端的交流也要通过服务器转发。
    这个接口是个内部靠MAP来实现,具体怎么写看自己的喜好,我以前写过,现在就是随便理了一下。
    你也可以参考一下JDK的线程池。Executor、ExecutorService等。
    public interface ThreadArray{
    //自动分配KEY
    public void add(Socket socket);
    //手动指定KEY
    public void add(Socket socket,String key);
    //向指定的socket发送消息
    public boolean sendMsg(String key,String msg);
    //向所有socket发送消息
    public boolean sendMsg(String msg);
    //关闭指定socket,清除出数组
    public boolean close(String key);
    //关闭所有socket
    public boolean close();
    }