reader.java

来自「我自己写的蓝牙例子」· Java 代码 · 共 86 行

JAVA
86
字号
import java.io.*;

/**该类为终结点的消息接受类
* 功能是不断等待从RemoteDev设备上发送过来的消息
*/

public class Reader implements Runnable
{
	public EndPoint endpt;

  private boolean done = false;

  public Reader() {
  }
  
    public void stop()
  {
    done = true;
  }
  
  
    public void run()
  {
    try
    {
      DataInputStream datain = endpt.con.openDataInputStream();

      while ( !done )
      {
        int signal = datain.readInt();  //暂停,直到读取了下个字符才执行下面的
        
        if ( signal == NetLayer.SIGNAL_MESSAGE )
        {
          String s = datain.readUTF();

          ChatPacket packet = new ChatPacket( NetLayer.SIGNAL_MESSAGE, endpt.remoteName, s );
          
          endpt.callback.handleAction( BTListener.EVENT_RECEIVED, endpt, packet );

        } else if ( signal == NetLayer.SIGNAL_HANDSHAKE )
        {
          String s = datain.readUTF();
          
          endpt.remoteName = s;
          
          endpt.putString( NetLayer.SIGNAL_HANDSHAKE_ACK, endpt.localName );

          endpt.callback.handleAction( BTListener.EVENT_JOIN, endpt, null );

        } else if ( signal == NetLayer.SIGNAL_TERMINATE )
        {

          endpt.putString( NetLayer.SIGNAL_TERMINATE_ACK, "end" );

          endpt.callback.handleAction( BTListener.EVENT_LEAVE, endpt, null );

          endpt.btnet.cleanupRemoteEndPoint( endpt );

          stop();

        } else if ( signal == NetLayer.SIGNAL_HANDSHAKE_ACK )
        {

          String s = datain.readUTF();

          endpt.remoteName = s;
          
          BTDemo.inc.btCanvas.addImage(endpt);

        } else if ( signal == NetLayer.SIGNAL_TERMINATE_ACK )
        {

        } else
        {
        	//未知消息
        }
      }

      datain.close();
    } catch (Exception e)
    {
      e.printStackTrace();
    }
  }
	
}

⌨️ 快捷键说明

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