⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.java

📁 这是一个蓝牙五子棋对战平台设计代码
💻 JAVA
字号:
package bluetoochgame;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

import java.util.Vector;

import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Gauge;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;

//jsr082 API
import javax.bluetooth.BluetoothStateException;
import javax.bluetooth.DeviceClass;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.DiscoveryListener;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
import javax.bluetooth.ServiceRecord;
import javax.bluetooth.UUID;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class Client implements Runnable,DiscoveryListener{
  private Connection connection;
  private DiscoveryAgent discoveryAgent;
   //响应服务的UUID
   private static final UUID ECHO_SERVER_UUID = new UUID(
           "F0E0D0C0B0A000908070605040302010", false);

   //设备集合
   Vector devices = new Vector();
   //服务集合
   Vector records = new Vector();
    String messagex,messagey;
    String message_1,message_2;
    StreamConnection   conn ;
    int i=1;
   //服务搜索的事务id集合
   int[] transIDs;


  public Client(Connection connection)
  {
    this.connection = connection;
  }

  public void start()
  {
    Thread t = new Thread(this);
    t.start() ;
  }

  public void sendMessage(String message1,String message2)
  {
    message_1 = message1;
    message_2 = message2;
    Thread fetchThread=new Thread(){
      public void run(){
      try {
      ServiceRecord sr=(ServiceRecord)records.elementAt(0);
      String url = sr.getConnectionURL( ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
    //  String message_1,message_2;


      conn = (StreamConnection) Connector.open(url);
      //Thread.sleep(500) ;
      DataOutputStream dos=conn.openDataOutputStream();
      dos.writeUTF(message_1);
      System.out.println("writex"+i+message_1);
      dos.writeUTF(message_2);
      System.out.println("writey"+i+message_2) ;
      dos.flush() ;
      dos.close();

       DataInputStream dis = conn.openDataInputStream();
       messagex = dis.readUTF();
       System.out.println("messagex is"+ i + messagex);
       messagey = dis.readUTF();
       System.out.println("messagey is"+i + messagey);
       dis.close();
       System.out.println(i) ;
       i++;
       connection.receiveMessage(messagex,messagey) ;
    }
    catch(Exception e)
    {
      System.out.println("yi chang");
      e.printStackTrace() ;
    }
    }
   };
    fetchThread.start();

  }

  public synchronized void run()
  {

    try  {
           LocalDevice local = LocalDevice.getLocalDevice();
           discoveryAgent = local.getDiscoveryAgent() ;
        }catch (BluetoothStateException bse) {}

          try {
                  discoveryAgent.startInquiry(DiscoveryAgent.GIAC,this);
                          //设备初使化   GIAC 找的是普通的设备
               }catch (BluetoothStateException bse) {}

              try{wait();}
              catch(Exception e){}


                      UUID[] uuids = new UUID[1];
                        uuids[0] = ECHO_SERVER_UUID;
                        transIDs = new int[devices.size()];
        for (int i = 0; i < devices.size(); i++) {
               RemoteDevice rd = (RemoteDevice) devices.elementAt(i);
             try {
                //记录每一次服务搜索的事务id
                System.out.println("begin searchservices") ;
                transIDs[i] = discoveryAgent.searchServices(null, uuids,
                        rd, this);
             } catch (BluetoothStateException e) {
                continue;
            }

        }//end for
      try {
          //阻塞,由serviceSearchCompleted()回调方法在所有设备都搜索完的情况下唤醒
          wait();
      } catch (InterruptedException e1) {
          e1.printStackTrace();
      }
      System.out.println("Client run end") ;





  }

  public void deviceDiscovered(RemoteDevice remoteDevice,DeviceClass deviceClass) {
         devices.addElement(remoteDevice);//remoteDevice 就是被发现的设备本身
         System.out.println("discovered a device ") ;
          System.out.println(remoteDevice.getBluetoothAddress()) ;
 }    //发现设备时候就会调用此程序  即由agent.startinquiry发出的

 public void inquiryCompleted(int param) {
   System.out.println("start inquiry completed") ;
   switch (param) {
              case DiscoveryListener.INQUIRY_COMPLETED:
              break;
              case DiscoveryListener.INQUIRY_ERROR:
              break;
              case DiscoveryListener.INQUIRY_TERMINATED:
              break;
         }
         System.out.println("complete inquary ") ;
         synchronized (this) {
          notify();
      }

 }

 public void serviceSearchCompleted(int transID, int respCode) {
       System.out.println("complete service Search") ;
        switch(respCode)
         {
           case DiscoveryListener.SERVICE_SEARCH_COMPLETED:
                   break;
           case DiscoveryListener.SERVICE_SEARCH_DEVICE_NOT_REACHABLE:
                   break;
           case DiscoveryListener.SERVICE_SEARCH_ERROR:
                   break;
           case DiscoveryListener.SERVICE_SEARCH_NO_RECORDS:
                   break;
           case DiscoveryListener.SERVICE_SEARCH_TERMINATED:
                   break;
         }
         synchronized (this) {
       notify();
   }

 }

 public void servicesDiscovered(int transID,ServiceRecord[] serviceRecord) {
       //  servicesFound = serviceRecord;
       System.out.println("get server") ;
       for (int i = 0; i < serviceRecord.length; i++) {
         records.addElement(serviceRecord[i]);
     }

 }//立刻返回transID;ID是辨别service的唯一识别;



}

⌨️ 快捷键说明

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