石头剪刀布交互
tcp传输数据
客户端代码
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 30000);
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你伸出的手指数");
String num = scanner.next();
OutputStream outputStream = socket.getOutputStream();
outputStream.write(num.getBytes(StandardCharsets.UTF_8));
socket.shutdownOutput();
System.out.println("传输成功,正在等待对手出手");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
bufferedReader.close();
outputStream.close();
socket.close();
}
将石头,剪刀或者布发给服务器,等待服务器进行比较,服务器比较后接收结果
服务器代码
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(30000);
String win = "你赢了";
String lose = "你输了";
String pin = "平局";
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你伸出的手指数");
int num = scanner.nextInt();
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
System.out.println("传输成功,正在等待对手出手");
byte[] bys = new byte[10];
int len = inputStream.read(bys);
String data = new String(bys,0,len);
int receive = Integer.parseInt(data);
int last = num - receive;
switch (last) {
case 5:
System.out.println(win);
send(socket, lose);
break;
case 3:
System.out.println(lose);
send(socket, win);
break;
case 2:
System.out.println(lose);
send(socket, win);
break;
case 0:
System.out.println(pin);
send(socket, pin);
break;
case -2:
System.out.println(win);
send(socket, lose);
break;
case -3:
System.out.println(win);
send(socket, lose);
break;
case -5:
System.out.println(lose);
send(socket, win);
break;
}
inputStream.close();
socket.close();
serverSocket.close();
}
private static void send(Socket socket, String s) throws IOException {
OutputStream outputStream = socket.getOutputStream();
outputStream.write(s.getBytes(StandardCharsets.UTF_8));
}
将接收到的信息与自己的信息进行比较,将结果返回给客户端