📄 clientchess.java
字号:
for(int i = 0; i < remoteDeviceNumber; i++)
transIds[i] = discoveryAgent.searchServices(null,uuidSet,remoteDevice[i], this);
}
catch(BluetoothStateException e)
{
//System.out.println("搜索设备上的服务时出现异常");
//提示用户,蓝牙连接出现问题,退出程序
Alert alert=new Alert("Message","搜索设备上的服务时发生异常",null,AlertType.WARNING);
Chess.dis.setCurrent(alert);
//Chess.quitApp();
}
try
{//阻塞,由serviceSearchCompleted()回调方法在所有设备都搜索完的情况下唤醒
wait();
}
catch (InterruptedException e)
{
}
if(serviceRecordNumber == 0)
{
if(clientType == 4)
{
//System.out.println("没有搜索到服务");
viewerCanvas.initViewerAcceptThread();
return;
}
else
{
//System.out.println("没有搜索到服务");
Chess.quitApp();
}
}
else if(serviceRecordNumber > 1 && clientType != 4 && clientType != 5)
{
//System.out.println("搜索到服务到了超过一个的服务,所以有问题");
//System.out.println("clientType的值是:" + clientType);
Chess.quitApp();
}
String url = null;
StreamConnection conn = null;
for(int d = 0; d < serviceRecordNumber; d++)
{
try
{
url = service[d].getConnectionURL( ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
//System.out.println("一、客户端获取设备的URL:"+url);
//System.out.println("客户端开始创建连接");
conn = (StreamConnection)Connector.open(url);
//System.out.println("客户端连接创建成功");
}
catch(IOException ie)
{
//System.out.println("客户端连接创建失败");
//System.out.println("二、客户端获取设备的URL:"+url);
//退出程序或者重试
//Alert alert=new Alert("Message","创建连接失败",null,AlertType.WARNING);
//Chess.dis.setCurrent(alert);
//Chess.quitApp();
return;
}
DataOutputStream dos = null;
DataInputStream dis = null;
try
{
dos=conn.openDataOutputStream();
dis=conn.openDataInputStream();
}
catch (IOException ie)
{
//System.out.println("客户端打开流失败");
//重试或者退出程序
Alert alert=new Alert("Message","ClientChess#4",null,AlertType.WARNING);
Chess.dis.setCurrent(alert);
//Chess.quitApp();
return;
}
try
{
discoveryAgent = null;
//System.out.println("客户端打开流成功"+dis);
if(clientType == 0)
{
//如果有的话读入服务端选择的来源
ifSelect = dis.readBoolean();
//System.out.println("客户端读到boolean值:"+ifSelect);
if(ifSelect)
{
String initString = dis.readUTF();
int n = 0;
chess = new int[10][9];
for(int i=9;i>=0;i--)
{
for(int j=8;j>=0;j--)
{
chess[i][j]=initString.charAt(n);
if(chess[i][j] < 16)
chess[i][j] = chess[i][j] + 16;
else if(chess[i][j] != 32)
chess[i][j] = chess[i][j] - 16;
n=n+1;
//System.out.println("成功取得一个棋盘初始化数据:"+chess[i][j]);
}
}
}
dis.close();
dos.close();
conn.close();
flash.createOk();
//System.out.println("开始创建打擂客户");
ChessCanvas chessCanvas=new ChessCanvas(mainSelect,1,selectedSaveIndex,ifSelect,chess, musicIndex, soundIndex);
flash.stopFlash();
//System.out.println("打擂客户创建成功");
Chess.dis.setCurrent(chessCanvas);
}
//向对方发送棋盘变化
else if(clientType == 1)
{
if(chessCanvas.ifHaveViewer())
{//接收到看擂者,将此信息传送给对方
dos.writeBoolean(true);
}
else
dos.writeBoolean(false);
for(int i = 0; i < 4; i++)
{
dos.writeInt(chance[i]);
//System.out.println("向对方发送棋盘变化:"+chance[i]);
}
//System.out.println("向对方发送棋盘变化完成");
dis.close();
dos.close();
conn.close();
//若是没有看擂者,直接向对方发送完数据后启动用来接收对方数据的监听器
//若是有看擂者存在,先向对方发送数据,再向看擂者发送数据,最后再启动用来接收对方数据的监听器
if(chessCanvas.ifHaveViewer())
{
//System.out.println("有看擂者存在,开始向看擂者发送数据");
if(serverOrClient)
new ClientChess(chance, chessCanvas, 0);
else
new ClientChess(chance, chessCanvas, 1);
}
else
chessCanvas.initAcceptThread();
}
//向看擂者发送棋盘变化数据
else if(clientType == 2)
{
if(serverOrClient)
{
for(int i = 0; i < 4; i++)
{
dos.writeInt(chance[i]);
//System.out.println("向看擂者发送:"+chance[i]);
}
}
else
{
dos.writeInt(9 - chance[0]);
//System.out.print("向看擂者发送:");
//System.out.print(9 - chance[0]);
dos.writeInt(8 - chance[1]);
//System.out.print("向看擂者发送:");
//System.out.print(8 - chance[1]);
dos.writeInt(9 - chance[2]);
//System.out.print("向看擂者发送:");
//System.out.print(9 - chance[2]);
dos.writeInt(8 - chance[3]);
//System.out.print("向看擂者发送:");
//System.out.print(8 - chance[3]);
}
dis.close();
dos.close();
conn.close();
chessCanvas.initAcceptThread();
}
//看擂者接收棋盘初始数据
else if(clientType == 3)
{
for(int i = 0; i < 10; i++)
{ for(int j = 0; j < 9; j++)
{
chess[i][j] = dis.readInt();
}
}
//System.out.println("看擂者接收初始棋盘数组成功");
dis.close();
dos.close();
conn.close();
viewerCanvas.setInitChess(chess);
return;
}
else if(clientType == 4)
{
boolean isFirst = dis.readBoolean();
//System.out.println("电台:接收的boolean值是:"+isFirst);
if(isFirst)
{
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 9; j++)
{
dos.writeInt(chess[i][j]);
}
}
}
else
{
for(int i = 0; i < 4; i++)
{
dos.writeInt(chance[i]);
}
}
dis.close();
dos.close();
conn.close();
viewerSendNumber++;
if(viewerSendNumber == serviceRecordNumber)
{
viewerCanvas.initViewerAcceptThread();
}
//System.out.println("电台:数据发送完毕");
}
else if(clientType == 5)
{
dos.writeBoolean(isPhase);
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 9; j++)
{
dos.writeInt(chess[i][j]);
}
}
if(isPhase)
{
//已经完成
}
else
{
dos.writeInt(reset.length);
for(int i = 0; i < reset.length; i++)
{
for(int j = 0; j < 4; j++)
{
dos.writeInt(reset[i][j]);
}
}
}
Chess.dis.setCurrent(form);
flash.stopFlash();
dis.close();
dos.close();
conn.close();
}
}
catch (Exception e)
{
//System.out.println("数据发送过程中出现异常");
//退出程序
//errorDeal.push("ClientChess#3", "创新连接并发送初始棋盘数据时发生未知错误");
Alert alert=new Alert("Message","发送数据过程中出现异常",null,AlertType.WARNING);
Chess.dis.setCurrent(alert);
//Chess.quitApp();
}
}
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -