62,623
社区成员
发帖
与我相关
我的任务
分享
import java.io.*;
import java.net.*;
import java.util.*;
/**
* 逻辑线程对象
*/
public class ServerThread extends Thread {
/**声明连接对象*/
Socket s;
/**声明输出流对象*/
OutputStream os;
/**声明输出流对象*/
InputStream is;
/**Random对象*/
Random r;
/**随机生成的数字*/
int n;
/**用户出错的次数*/
int count = 0;
public ServerThread(Socket s){
this.s = s;
//初始化输入输出流
init();
//初始化
n = generateNumber();
}
private void init(){
r = new Random();
try{
os = s.getOutputStream();
is = s.getInputStream();
}catch(Exception e){
}
}
private int generateNumber(){
return r.nextInt(6) + 1;
}
public void run(){
//错误的次数不到3
while(count < 3){
System.out.println(n);
try{
//获得输入
byte[] b = new byte[10];
int num = is.read(b);
//转换成字符串
String s = new String(b,0,num);
//比较
if(s.equals("大")){
//判断是否正确
if(n > 3){
//重新生成一个
n = generateNumber();
//发送反馈
os.write("恭喜你,答对了!".getBytes());
os.flush();
}else{
//重新生成一个
n = generateNumber();
//错误次数增加
count++;
//发送反馈
os.write("回答错误,继续!".getBytes());
os.flush();
}
}else if(s.equals("小")){
//判断是否正确
if(n < 4){
//重新生成一个
n = generateNumber();
//发送反馈
os.write("恭喜你,答对了!".getBytes());
os.flush();
}else{
//重新生成一个
n = generateNumber();
//错误次数增加
count++;
//发送反馈
os.write("回答错误,继续!".getBytes());
os.flush();
}
}else{ //输入错误
os.write("格式错误,请输入大或小,继续!".getBytes());
os.flush();
}
}catch(Exception e){
e.printStackTrace();
}
}
//游戏结束
try{
os.write("游戏结束!".getBytes());
//关闭所有连接
//is.close();
//os.close();
s.close();
}catch(Exception e){
}
}
}
import java.io.*;
import java.net.*;
/**
* 服务器
*/
public class Server {
public static void main(String[] args) {
try{
//建立服务器端socket
ServerSocket ss = new ServerSocket(10000);
System.out.println("服务器已启动:");
while(true){
//接受连接
Socket s = ss.accept();
//启动一个线程去处理
ServerThread st = new ServerThread(s);
st.start();
}
}catch(Exception e){
e.printStackTrace();
}
//关闭
}
}