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

📄 serverconnection.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: ServerConnection.java,v 1.2 2003/05/29 22:39:15 wildcard Exp $ */package com.sun.j2me.blueprints.slugs.server;import com.sun.j2me.blueprints.slugs.shared.*;import java.io.*;import java.net.*;/** * Instances of this class track client * connections for the server. */public class ServerConnection implements Runnable {    private MultiPlayerServer server;    private Socket socket;    private DataInputStream in;    private DataOutputStream out;    private GameEngine engine;    private int player_id;    private Message err;    private boolean done;    /**     * Create a new instance for use with game engine 'engine',     * socket 'socket', and server 'server'.     */    public ServerConnection(GameEngine engine, Socket socket,                             MultiPlayerServer server) {        this.server = server;        this.socket = socket;        this.engine = engine;        done = false;        err = new Message(Message.ALL_FRAMES, Message.ERROR, 0);        Thread thread = new Thread(this);        thread.start();    }    private synchronized void handleSignup() {        player_id = engine.addPlayer();        if (player_id < 0) {            System.out.println("ServerConnection.handleSignup(): engine refused player sign-up");            handleError();            return;        }         System.out.println("signed up player " + player_id);        Message msg = new Message(Message.ALL_FRAMES, Message.SIGNUP_ACK,                                   player_id);        try {            msg.archive(out);        } catch (IOException e) {            System.out.println("***: could not send msg " + err);        }     }     private void handleClientStatus(Message msg) {        engine.updatePlayer(msg.getFrameNumber(), player_id,                             msg.getBody()[0]);    }     public int getPlayerID() {        return player_id;    }     private void handleSignoff() {        engine.removePlayer(player_id);        done = true;    }     private void handleError() {        try {            err.archive(out);        } catch (IOException e) {            System.out.println("***: could not send msg " + err);        }         done = true;    }     /**     * Send a message to the client connected to this instance     */    public synchronized void sendMessage(Message msg) {        try {            msg.archive(out);        } catch (IOException e) {            System.out.println("***: could not send msg " + msg);        }     }     /**     * main loop     */    public void run() {        Message msg;        try {            in = new DataInputStream(socket.getInputStream());            out = new DataOutputStream(socket.getOutputStream());            while (!done) {                msg = Message.createFromStream(in);                switch (msg.getType()) {                case Message.SIGNUP:                    handleSignup();                    break;                case Message.CLIENT_STATUS:                    handleClientStatus(msg);                    break;                case Message.SIGNOFF:                    handleSignoff();                    break;                default:                    handleError();                    break;                }            }             in.close();            out.close();            socket.close();        } catch (Exception ioe) {            System.out.println("*** ServerConnection.run(): " + ioe);            server.removeConnection(this);        }         handleSignoff();        server.removeConnection(this);        System.out.println("player " + player_id + " disconnected.");    } }

⌨️ 快捷键说明

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