📄 server2.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 + -