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

📄 server.java

📁 j2me的坦克大战 元代码 单机版和蓝牙联网版
💻 JAVA
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */import javax.microedition.lcdui.*;import java.io.*;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.util.Vector;import javax.bluetooth.DiscoveryAgent;import javax.bluetooth.LocalDevice;import javax.microedition.io.Connector;import javax.microedition.io.StreamConnection;import javax.microedition.io.StreamConnectionNotifier;public class Server implements Runnable {    private Connection connection;    private LocalDevice local = null;    private ClientProcessor processor;    private DataOutputStream dos;    private boolean isClosed = false;    private boolean isOut = false;    private StreamConnectionNotifier notifier;    private String message = null;   // private StreamConnection conn1;    private String connectionURL =            "btspp://localhost:F0E0D0C0B0A000908070605040302010;" +            "authenticate=false;encrypt=false;name=FIR Server";    private Vector queue = new Vector();    private Thread accepterThread;    //i add    DataInputStream dis = null;        public Server(Connection connection) {        this.connection = connection;    }    public void start() {        //System.out.println("Server start");        accepterThread = new Thread(this);        accepterThread.setPriority(9);        accepterThread.start();    }    public void run() {        boolean isBTReady = false;        try {            local = LocalDevice.getLocalDevice();            local.setDiscoverable(DiscoveryAgent.GIAC);        } catch (Exception e) {            System.out.println("Can't set discoverable mode...");        }        try {            notifier = (StreamConnectionNotifier) Connector.open(connectionURL);            //System.out.println("server is opening");            isBTReady = true;        } catch (Exception e) {            System.err.println("Can't initialize bluetooth: " + e);        }        // connection.completeInitialization(isBTReady);        if (!isBTReady) {            return;        }        processor = new ClientProcessor();        while (!isClosed) {            StreamConnection conn = null;            try {                conn = notifier.acceptAndOpen();            } catch (IOException e) {                //continue;            }            processor.addConnection(conn);           // conn1 = conn;        }    }    public void sendMessage(String message) {        this.message = message;                try {            dos.writeUTF(message);            dos.flush();            //dos.close();              } catch (IOException e) {        }    }    private void processConnection(StreamConnection conn) {        try {            dos = conn.openDataOutputStream();        } catch (Exception e) {        }        readInputString(conn);    }    private void readInputString(StreamConnection conn) {        String message1 = null;        try {            dis = conn.openDataInputStream();            message1 = dis.readUTF();            //dis.close();            connection.receiveMessage(message1);        } catch (Exception e) {            e.printStackTrace();                    }    }    private class ClientProcessor implements Runnable {        private Thread processorThread;        private Vector queue = new Vector();        private boolean isOk = true;        private StreamConnection conn;        ClientProcessor() {            processorThread = new Thread(this);            processorThread.setPriority(7);            processorThread.start();            //System.out.println("client");        }        public void run() {            while (!isClosed) {                synchronized (this) {                    if (queue.size() == 0) {                        try {                            wait();                        } catch (InterruptedException e) {                            System.err.println("Unexpected exception: " + e);                            destroy(false);                            return;                        }                    }                }                                if (isClosed) {                    return;                }                conn = (StreamConnection) queue.firstElement();                queue.removeElementAt(0);                processConnection(conn);                            }        }        void addConnection(StreamConnection conn) {            synchronized (this) {                queue.addElement(conn);                notify();            }        }        public void destroy(boolean needJoin) {                           StreamConnection conn;                synchronized (this) {                    notify();                }                while (queue.size() != 0) {                    conn = (StreamConnection) queue.firstElement();                    queue.removeElementAt(0);                    try {                        if(conn!=null)conn.close();                    } catch (IOException e) {                        e.printStackTrace();                    }                }                try {                    processorThread.join();                } catch (InterruptedException e) {                    e.printStackTrace();                }                try {                    if(dos!=null)dos.close();                    if(dis!=null)dis.close();               } catch (IOException ex) {                   ex.printStackTrace();               }        }    }}

⌨️ 快捷键说明

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