btserver.java

来自「J2ME程序设计实例教程的源码」· Java 代码 · 共 64 行

JAVA
64
字号
import javax.bluetooth.*;
import javax.microedition.io.*;
import java.io.*;

/**
 * 该类用于启动蓝牙设备,注册蓝牙服务,等待客户端的连接。
 */
public class BTServer implements Runnable {
    private static final String uuidString = "00112233445566778899AABBCCDDEEFF";
    private GobangMIDlet midlet;    //控制器
    private StreamConnectionNotifier service;   //服务
    
    //构造方法,创建一个蓝牙服务器
    public BTServer(GobangMIDlet midlet) {
        this.midlet = midlet;
    }
    
    //启动服务
    public void startService() {
        Thread t = new Thread(this);
        t.start();
    }
    
    //服务启动线程执行体
    public void run() {
        UUID uuid = new UUID(uuidString, false);
        try {
            //获取蓝牙设备,并使设备可以被发现。
            LocalDevice device = LocalDevice.getLocalDevice();
            device.setDiscoverable(DiscoveryAgent.GIAC);
            
            //使用SPP(串口连接简表)打开一个FRCOMM链接
            service = (StreamConnectionNotifier)
                        Connector.open("btspp://localhost:" + uuid.toString() + ";name=Gobang Server");
            
            //注册服务,等待客户连接。acceptAndOpen()方法将阻塞当前线程。
            //当有客户端连接时,acceptAndOpen()方法将返回一个StreamConnection对象。
            StreamConnection conn = service.acceptAndOpen();
            close();    //获得一个连接后关闭服务
            
            //开始对弈。
            midlet.startPlay(new BTConnection(midlet,conn));
        }
        catch(BluetoothStateException bse) {
            //midlet.showAlert(bse.toString());
        }
        catch(IOException ioe) {
            //midlet.showAlert(ioe.toString());
        }
    }
    
    //关闭服务
    public void close() {
        try {
            if(service != null) {
                service.close();
                service = null;
            }
        }
        catch(IOException ioe) {
            //
        }
    }
}

⌨️ 快捷键说明

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