java bluetooth server将消息发送回客户端

时间:2016-11-19 21:33:18

标签: java bluetooth server outputstream printwriter

我正在构建与android设备(作为客户端)通信的简单java服务器。目前,我能够通过蓝牙从我的手机(客户端)向我的电脑(服务器)发送消息。问题是我无法将服务器的消息发送回客户端。我使用的是bluecave库。这是我的代码

public class MainTest {
    UUID uuid = new UUID("8848",true);
    public static void main(String[] args) {
        LocalDevice local = null;
        try {
            local = LocalDevice.getLocalDevice();
        } catch (BluetoothStateException e) {
            e.printStackTrace();
        }
        System.out.println("Serverted:\n" +local.getBluetoothAddress() +"\n"+local.getFriendlyName());
        MainTest ff = new MainTest();
        while (true) {
            ff.startserver();
        }
    }

    public void startserver() {
        try {
            String url = "btspp://localhost:" + uuid + ";name=File Server";
            StreamConnectionNotifier service = (StreamConnectionNotifier) Connector.open( url );

            StreamConnection con = service.acceptAndOpen();
            OutputStream dos = con.openOutputStream();
            InputStream dis = con.openInputStream();

            while (true) {
                byte buffer[] = new byte[1024];
                int bytes_read = dis.read( buffer );
                String received = new String(buffer, 0, bytes_read);
                System.out.println("Message:"+ received);

                if("a".equals(received)) {
                    dos.write("sdfsd".getBytes());
                    dos.flush();
                }
            }
            // con.close();
        } catch ( IOException e ) {
            System.err.print(e.toString());
        }
    }

我还尝试使用PrintWriter更新的代码,但仍无响应......

public static void startserver() {
        try {
            String url = "btspp://localhost:" + uuid + ";name=TTT";
            StreamConnectionNotifier service = (StreamConnectionNotifier) Connector.open( url );

            StreamConnection con = service.acceptAndOpen();
            DataOutputStream dos = con.openDataOutputStream();
            InputStream dis = con.openInputStream();
            PrintWriter pWriter = new PrintWriter(new BufferedWriter(new OutputStreamWriter(dos)), true);
            while (true) {
                byte buffer[] = new byte[10];
                int bytes_read = dis.read(buffer);
                String received = new String(buffer, 0, bytes_read);
                System.out.println("Message:"+ received);

                pWriter.write("testString");
                pWriter.flush();

            }
           // pWriter.close();
           // con.close();


            // con.close();
        } catch ( IOException e ) {
            System.out.println(e.getMessage());
        }
    }

1 个答案:

答案 0 :(得分:0)

以下答案解决了从服务器向Android客户端发送短信的问题:Send text through Bluetooth from Java Server to Android Client

也许你可以在你的情况下使用它。