?? client.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 + -