当前位置: 首页 > news >正文

java 网络知识 + 多线程问题

服务器:

package p1007;import java.io.*;
import java.net.*;
import java.util.Random;public class Server {public static void main(String[] args) {int port = 12345; // 服务端口try (ServerSocket serverSocket = new ServerSocket(port)) {System.out.println("服务器已启动,等待客户端连接...");while (true) {Socket socket = serverSocket.accept();System.out.println("客户端连接: " + socket.getInetAddress());new ClientHandler(socket).start(); // 为每个客户端连接启动一个新线程}} catch (IOException e) {e.printStackTrace();}}
}class ClientHandler extends Thread {private Socket socket;public ClientHandler(Socket socket) {this.socket = socket;}@Overridepublic void run() {try (BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter out = new PrintWriter(socket.getOutputStream(), true)) {Random random = new Random();int num1 = random.nextInt(100);int num2 = random.nextInt(100);int correctAnswer = num1 + num2;out.println("请计算: " + num1 + " + " + num2 + " = ?");String inputLine;while ((inputLine = in.readLine()) != null) {try {int userAnswer = Integer.parseInt(inputLine);if (userAnswer == correctAnswer) {out.println("回答正确!连接结束。");System.out.println(socket.getInetAddress()+"回答正确!连接结束。");out.println("结束");System.out.println(socket.getInetAddress()+"结束");break;} else {System.out.println(socket.getInetAddress()+"错误,请再试一次:");out.println("错误,请再试一次:");}} catch (NumberFormatException e) {out.println("无效输入,请输入一个数字。");System.out.println(socket.getInetAddress()+"无效输入,请输入一个数字。");}}} catch (IOException e) {e.printStackTrace();} finally {try {socket.close();} catch (IOException e) {e.printStackTrace();}}}
}

客服机:

package p1007;import java.io.*;
import java.net.*;public class Client {public static void main(String[] args) {String serverAddress = "localhost"; // 服务器地址int port = 12345; // 服务器端口try (Socket socket = new Socket(serverAddress, port);BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter out = new PrintWriter(socket.getOutputStream(), true);BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in))) {String serverMessage;while ((serverMessage = in.readLine()) != null) {System.out.println("服务器: " + serverMessage);if(serverMessage.equals("回答正确!连接结束。"))break;System.out.print("您的答案: ");String answer = userInput.readLine();out.println(answer); // 发送用户的答案}} catch (IOException e) {e.printStackTrace();}System.out.println("结束");}
}

http://www.lryc.cn/news/455573.html

相关文章:

  • android 菜单不显示auto time zone菜单
  • 51单片机的金属探测器【proteus仿真+程序+报告+原理图+演示视频】
  • 使用Spring Security实现用户-权限-资源的精细化控制
  • 动态规划10:174. 地下城游戏
  • 【数据结构】链表-1
  • Python进阶--正则表达式
  • 富格林:发现潜在欺诈安全交易
  • Linux复习--Linux服务管理类(SSH服务、DHCP+FTP、DNS服务、Apache服务、Nginx服务、HTTP状态码)
  • 如何用大模型来提升学习效率?
  • SQL进阶技巧:如何优雅求解指标累计去重问题?
  • 大数据毕业设计选题推荐-国产电影数据分析-Python数据可视化-Hive-Hadoop-Spark
  • Linux:无法为立即文档创建临时文件: 设备上没有空间
  • 【SQL】掌握SQL查询技巧:数据筛选与限制
  • 大学生社团活动系统小程序的设计
  • codetop标签双指针题目大全解析(三),双指针刷穿地心!!!!!
  • HarmonyOS应用六之应用程序进阶一
  • vue开发中变量第一次双向绑定无效,界面并没有变化,第二次则又好了。
  • C++基础(8)——string的相关面试题
  • 【Docker】06-DockerCompose
  • 代码随想录训练营Day27 | 77. 组合 | 216.组合总和III | 17.电话号码的字母组合
  • Linux文件重定向文件缓冲区
  • 训练贪吃蛇ai的后续记录
  • WPF 手撸插件 八 操作数据库一
  • 代数结构基础 - 离散数学系列(八)
  • 函数的arguments为什么不是数组?如何转化为数组?
  • Java之反射
  • 3dsMax添加天空盒
  • C语言的类型提升机制
  • Pandas和Seaborn数据可视化
  • 爬虫(Python版本)