⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multiplayerserver.java

📁 这是我编写的第一个J2ME程序
💻 JAVA
字号:
/* * Copyright (c) 2002, 2003 Sun Microsystems, Inc. All Rights Reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * - Redistribution of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * - Redistribution in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of Sun Microsystems, Inc., 'Java', 'Java'-based * names, or the names of contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * You acknowledge that this software is not designed, licensed or * intended for use in the design, construction, operation or maintenance * of any nuclear facility. $Id: MultiPlayerServer.java,v 1.1 2003/05/16 00:16:01 zull Exp $ */package com.sun.j2me.blueprints.slugs.server;import com.sun.j2me.blueprints.slugs.shared.*;import java.io.*;import java.net.*;import java.util.List;import java.util.Vector;/** * This class implements a generic multiplayer * server. The name of the class of the actual * game engine is passed in as an argument to * the constructor. The server listens for * incoming connections, and spawns off * ServerConnection instances for each new * connection. */public class MultiPlayerServer implements Server, Runnable,                                           CommunicationDelegate {    private GameEngine engine;    private List list;    /**     * Construct a new instance of the server. Create     * a game engine instance matching game 'game'.     */    public MultiPlayerServer(String game) {        try {            engine =                 (GameEngine) Class.forName("com.sun.j2me.blueprints.slugs.server."                                            + game + "Engine").newInstance();        } catch (Exception e) {            e.printStackTrace();            System.out.println("*** MultiPlayerServer.MultiPlayerServer(): cannot create engine for '"                                + game + "': " + e);        }         engine.setDelegate(this);        Thread t1 = new Thread(engine);        t1.start();        list = new Vector();        Thread t2 = new Thread(this);        t2.start();    }    /**     * Distribute game state update to all clients     */    public synchronized void distributeUpdate(Frame frame, int frame_no) {        ServerConnection conn;        Message msg = new Message(frame_no, frame);        for (int i = 0; i < list.size(); i++) {            conn = (ServerConnection) list.get(i);            conn.sendMessage(msg);        }     }     /**     * Remove a client connection     */    public synchronized void removeConnection(ServerConnection conn) {        list.remove(conn);        System.out.println("removed connection for player "                            + conn.getPlayerID());        System.out.println("connection list size is now " + list.size());    }     /**     * main loop     */    public void run() {        ServerSocket socket;        try {            socket = new ServerSocket(PORT);            System.out.println("multiplayer server listening @ " + PORT);            for (; ; ) {                if (list.size() >= engine.getMaxPlayerCount()) {                    // System.out.println("max number of players connected, not currently listening for new connections...");                    try {                        Thread.sleep(5000);                    } catch (InterruptedException e) {}                } else {                    synchronized (this) {                        list.add(new ServerConnection(engine,                                                       socket.accept(), this));                    }                 }             }         } catch (IOException ioe) {            System.out.println("*** MultiPlayerServer.run(): " + ioe);        }     } }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -