小编Ref*_*tor的帖子

蓝牙连接; 无法正确发送字符串

当我需要将Strings从我的服务器bluetooth-socket发送到我的客户端bluetooth-socket时,我的程序会遇到麻烦.只要我一次只发送一个字符串(例如聊天),但是如果我需要在短时间内编写更多字符串(以交换信息),一切都可以正常工作,字符串将不会从客户端代码中分离出来.例如,如果我发送"FirstUser"并且在"SecondUser"之后,客户端不读取"FirstUser",然后读取"SecondUser".它将显示"FirstUserSecondUser".我该如何避免这种行为?

编辑:如果我让线程在能够发送新消息之前进入睡眠状态,它会读取正确的字符串,但此解决方案无法正常工作.

服务器代码:发送给所有客户端(已编辑)

   public synchronized void sendToAll(String message)
{   
    try {
        Thread.sleep(100);
    } catch (InterruptedException e1) {
        e1.printStackTrace();
    }

    publishProgress(message);
    for(OutputStream writer:outputList) {
        try {
            writer.write(message.getBytes());
            writer.flush();
        } catch (IOException e) {
            System.out.println("Some-Error-Code");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

服务器代码:从客户端读取:

   public void run() {
    String nachricht;
    int numRead;
    byte[] buffer = new byte[1024];
    while (runningFlag) 
    {
        try {
            if((numRead = inputStream.read(buffer)) >= 0) { 
                nachricht = new String(buffer, 0, numRead);
                serverThread.handleMessage(nachricht); 
            }
            }
             catch (IOException e) {
                this.cancel();
                e.printStackTrace();
            }
    } 
} 
Run Code Online (Sandbox Code Playgroud)

客户代码:从服务器读取(已编辑) …

java android bluetooth inputstream outputstream

6
推荐指数
1
解决办法
2560
查看次数

标签 统计

android ×1

bluetooth ×1

inputstream ×1

java ×1

outputstream ×1