Java Socket实现猜数字小游戏

 更新时间:2020年09月24日 11:48:25   作者:清潇和梨花  
这篇文章主要为大家详细介绍了Java Socket实现猜数字小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java Socket实现猜数字游戏的具体代码,供大家参考,具体内容如下

运行截图

Server

Client

完整代码

Server

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;
import java.util.Scanner;

public class ServerDemo {
 private int flag;

 public void server() throws IOException {
  //创建一个服务器
  System.out.println("服务端启动,等待客户端连接。。。");
  PrintWriter out = null;
  Scanner getClient = null;
  ServerSocket server = null;
  Socket client = null;
  this.setFlag();
  try {
   server = new ServerSocket(6666);
   //创建一个接收连接客户端的对象
   client = server.accept();
   System.out.println(client.getInetAddress() + " 已成功连接到此台服务器上。");
   //字符输出流
   out = new PrintWriter(client.getOutputStream()); //向客户端发送数据
   out.println("欢迎来到猜数字小游戏(1-100)!!!");
   out.flush();//将缓冲流中的数据全部输出
   getClient = new Scanner(client.getInputStream()); //接收客户端发送的数据
   //阻塞等待客户端发送消息过来
   while (getClient.hasNextLine()) {
    String returnMsg = null;
    String tmp = getClient.nextLine();
    if ("e".equals(tmp)) {
     break;
    } else if ("c".equals(tmp)) {
     returnMsg = "欢迎来到新一轮的猜数字小游戏(1-100)!!!";
     this.setFlag();
    } else {
     int clientInput = Integer.parseInt(tmp);

     if (clientInput > flag) {
      returnMsg = "你输入的数字大了!!!";
     } else if (clientInput < flag) {
      returnMsg = "你输入的数字小了!!!";
     } else {
      returnMsg = "恭喜你,猜中了!!!继续(输入c),退出(输入e)";
     }
    }
    out.println(returnMsg); //向客户端发送数据
    out.flush();
   }
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {
   out.close();
   getClient.close();
   server.close();
  }
 }

 // 生成随机数字
 public void setFlag() {
  Random r = new Random();
  flag = r.nextInt(100);
  System.out.println("猜数字小游戏答案:flag = " + flag);
 }

 public static void main(String[] args) throws IOException {
  new ServerDemo().server();
 }
}

Client

import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class ClientDemo {

 public void client() throws IOException {
  System.out.println("正在向服务器请求连接。。。");
  Socket client = null;
  Scanner getKey = null;
  Scanner getServer = null;
  PrintWriter out = null;
  try {
   client = new Socket("127.0.0.1", 6666);
   getServer = new Scanner(client.getInputStream());
   System.out.println(getServer.nextLine());
   out = new PrintWriter(client.getOutputStream());
   System.out.print("请输入数字:");
   //先读取键盘录入方可向服务端发送消息
   getKey = new Scanner(System.in);
   while (getKey.hasNextLine()) {
    //写到服务端的的控制台
    out.println(getKey.nextLine());
    out.flush();
    try {
     System.out.println("提示消息:" + getServer.nextLine());
     System.out.print("请输入数字:");
    } catch (Exception e) {
     System.out.print("游戏结束!!!");
     break;
    }
    //阻塞等待接收服务端的消息
   }
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {
   getKey.close();
   getServer.close();
   out.close();
   client.close();
  }

 }

 public static void main(String[] args) throws IOException {
  new ClientDemo().client();
 }
}

更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring IOC与DI核心深入理解

    Spring IOC与DI核心深入理解

    IOC也是Spring的核心之一了,之前学的时候是采用xml配置文件的方式去实现的,后来其中也多少穿插了几个注解,但是没有说完全采用注解实现。那么这篇文章就和大家分享一下,全部采用注解来实现IOC+DI
    2023-02-02
  • 两个小例子轻松搞懂 java 中递归与尾递归的优化操作

    两个小例子轻松搞懂 java 中递归与尾递归的优化操作

    这篇文章主要介绍了两个小例子轻松搞懂 java 中递归与尾递归的优化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Java 基础之修饰符关键词整理

    Java 基础之修饰符关键词整理

    这篇文章主要介绍了Java 基础之修饰符关键词整理的相关资料,需要的朋友可以参考下
    2017-02-02
  • java集合类源码分析之Set详解

    java集合类源码分析之Set详解

    下面小编就为大家带来一篇java集合类源码分析之Set详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • java中堆内存与栈内存的知识点总结

    java中堆内存与栈内存的知识点总结

    在本篇文章里小编给大家整理的是关于java中堆内存与栈内存的知识点总结,有需要的朋友们可以跟着学习下。
    2019-12-12
  • SpringBoot熔断机制之CircuitBreaker详解

    SpringBoot熔断机制之CircuitBreaker详解

    这篇文章主要介绍了SpringBoot熔断机制之CircuitBreaker详解,SpringBoot的熔断机制在微服务架构中扮演着重要角色,其中CircuitBreaker是其核心机制之一,用于防止服务的异常状态影响到整个系统的运作,需要的朋友可以参考下
    2023-10-10
  • Java垃圾回收之分代收集算法详解

    Java垃圾回收之分代收集算法详解

    今天小编就为大家分享一篇关于Java垃圾回收之分代收集算法详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • 浅析SpringBoot中使用thymeleaf找不到.HTML文件的原因

    浅析SpringBoot中使用thymeleaf找不到.HTML文件的原因

    这篇文章主要介绍了SpringBoot中使用thymeleaf找不到.HTML文件的原因分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • spring 注解如何开启声明式事务

    spring 注解如何开启声明式事务

    这篇文章主要介绍了spring 注解开启声明式事务问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Spring依赖注入中的@Resource与@Autowired详解

    Spring依赖注入中的@Resource与@Autowired详解

    这篇文章主要介绍了Spring依赖注入中的@Resource与@Autowired详解,提到Spring依赖注入,大家最先想到应该是@Resource和@Autowired,对于Spring为什么要支持两个这么类似的注解却未提到,属于知其然而不知其所以然,本文就来做详细讲解,需要的朋友可以参考下
    2023-09-09

最新评论