62,614
社区成员
发帖
与我相关
我的任务
分享
//按钮事件
if (socket == null) { //socket是成员变量
socket=new Socket();
socket.connect(new InetSocketAddress(InetAddress.getByName(IP),sportNumber), 15*1000);
}
if(socket.isConnected())//如果连接服务器成功
{
if (ss == null) { //ss为成员变量,不必是全局
ss=new serverSocket(socket);//ss为serverSocket类的全局变量(已在前面定义过)
ss.start();
}
ss.setFlag(false); //设置收信标志
while (! ss.getFlag()) { //如果收信没结束,等待
Thread.sleep(100);
}
...
//线程
public class serverSocket extends Thread
{
boolean runnning = true; //结束标志
boolean flag = true; //收信标志
InputStream is=null;
BufferedReader br=null;
String serverInformation=null;
boolean isHaveReName=false;
Socket socket=null;
public serverSocket(Socket socket)
{
try
{
this.socket=socket;
is=socket.getInputStream();
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
// os=socket.getOutputStream();
// ps=new PrintStream(os);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
public void run()
{
while(running) //这样好控制线程结束
{
try
{
serverInformation=getInformation();
flag = true; //接受完消息改变flag
if(serverInformation.equals("ReName"))
{
//System.out.println("收到重名信息!");
isHaveReName=true;
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
public boolean getFlag() {return flag;}
public void setFlag(boolean b) {flag = b;}
public boolean isRunning() {return running;}
public void setRunning(boolean b) {running=b;}