📄 socketthread.java
字号:
//此线程类用来接受对方的数据,并且处理对方传过来的数据
//-1,-1为中断命令,-1,0为重新开始命令
import java.net.*;
import java.io.*;
import javax.swing.*;
public class SocketThread extends Thread{
private ChessEx ce;
private Chess chess;
private boolean isRun=true;
private boolean halt=false;
private byte message[]=new byte[2];
private InputStream in;
private OutputStream out;
private Socket socket;
public SocketThread(ChessEx chessex){
this.ce=chessex;
this.chess=ce.chess;
this.socket=ce.connection;
this.in=ce.in;
this .out=ce.out;
}
public void run(){
while(isRun){
try{
if(in.read(message)==2){
if(message[0]==-1){
if(message[1]==-1){//中断连接命令
StopRun(); //停止线程
halt=true;
}
if(message[1]==0){//新开局命令
if(ce.player1)
ce.wait=false;//如果服务端则不等待
if(ce.player2)
ce.wait=true;//如果客户端则等待
JOptionPane.showMessageDialog(null,"对方开始新局"
,"新局",JOptionPane.INFORMATION_MESSAGE);//
//接受方置位
if(chess!=null)
for(int i=0;i<15;i++)
for(int j=0;j<15;j++)
chess.point[i][j]=2;
ce.qipan.draw();
}
}
else
ce.messageDeal(message[0],message[1]);
}
}
catch(IOException e){
System.out.println(e);
StopRun();
ce.setTitle("五子棋游戏 江南大学计算机科学与技术0303 张佳强开发设计");
}
}
try{
in.close();
out.close();
socket.close();
if(halt){
JOptionPane.showMessageDialog(null,"连接错误",
"网络终断",JOptionPane.ERROR_MESSAGE);
ce.Reset();
ce.setTitle("五子棋游戏 江南大学计算机科学与技术0303 张佳强开发设计");
}
}
catch(IOException e){
ce.Reset();//连接错误后就将程序置于初始状态
System.out.println(e);
ce.setTitle("五子棋游戏 江南大学计算机科学与技术0303 张佳强开发设计");
}
}
public void StopRun(){
isRun=false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -