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

📄 server2.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 Server2 implements Runnable {    private Connection2 connection;    private LocalDevice local = null;    private ClientProcessor processor;    private DataOutputStream dos;    private boolean isClosed = false;    private boolean isOut = false;    private StreamConnectionNotifier notifier;    private String messagex = null,  messagey = null,messagez = null,messaget = null;   // private StreamConnection conn1;    private String connectionURL =            "btspp://localhost:F0E0D0C0B0A000908070605040302010;" +            "authenticate=false;encrypt=false;name=FIR Server2";    private Vector queue = new Vector();    private Thread accepterThread;    public Server2(Connection2 connection) {        this.connection = connection;    }    public void start() {        //System.out.println("Server2 start");        accepterThread = new Thread(this);        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("Server2 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 message1,String message2,String message3,String message4) {        messagex = message1;        messagey = message2;        messagez = message3;        messaget = message4;        try {            dos.writeUTF(messagex);            dos.writeUTF(messagey);            dos.writeUTF(messagez);            dos.writeUTF(messaget);                        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;        String message2 = null;        String message3 = null;        String message4 = null;        try {            DataInputStream dis = conn.openDataInputStream();            message1 = dis.readUTF();            message2 = dis.readUTF();            message3 = dis.readUTF();            message4 = dis.readUTF();            dis.close();            connection.receiveMessage(message1,message2,message3,message4);        } catch (Exception e) {            e.printStackTrace();                    }    }    private class ClientProcessor implements Runnable {        private Thread processorThread;        private Vector queue = new Vector();        private boolean isOk = true;        ClientProcessor() {            processorThread = new Thread(this);            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;                        }                    }                }                StreamConnection conn;                if (isClosed) {                    return;                }                conn = (StreamConnection) queue.firstElement();                queue.removeElementAt(0);                processConnection(conn);                try {                    dos = conn.openDataOutputStream();                } catch (Exception e) {                }            }        }        void addConnection(StreamConnection conn) {            synchronized (this) {                queue.addElement(conn);                notify();            }        }        void destroy(boolean needJoin) {            StreamConnection conn;            synchronized (this) {                notify();            }            while (queue.size() != 0) {                conn = (StreamConnection) queue.firstElement();                queue.removeElementAt(0);                try {                    conn.close();                } catch (IOException e) {                }            }            try {                processorThread.join();            } catch (InterruptedException e) {            }        }    }}

⌨️ 快捷键说明

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