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

实验六:Java流式编程与网络程序设计

一、字节输入/输出流实现数据的保存和读取

编程要求

根据提示,在右侧编辑器补充代码。 编写应用程序(SortArray.java),使用字节输入/输出流实现数据的保存和读取。 要求功能如下:

  • 输入1~100之间的整型数据保存到数组(数组大小为10)中
  • 将数组排序(由小到大)后的元素保存到指定的文件中
  • 如果文件不存在,则创建文件
  • 从文件中读取排序后的元素并按指定格式输出
  • 利用异常处理机制处理可能发生的错误

测试说明

平台会对你编写的代码进行测试:

测试输入:70 94 21 43 76 60 70 37 75 80

预期输出: 21<37<43<60<70<70<75<76<80<94

代码

package step2;
import java.io.*;
import java.util.Scanner;public class Encrypt {public static void main(String[] args) throws IOException {// 创建要发送的电报Scanner sc = new Scanner(System.in);String data = sc.next();// 将电报分割成字符数组/********** Begin **********/char[] area = data.toCharArray();/********** End **********/// 打开指定存放电报的文件,如果文件不存在,则创建File file = new File("data.txt");if (!file.exists()) {file.createNewFile();}// 循环遍历字符数组,将每个字符加密处理for (int i = 0; i < area.length; i++) {area[i] = (char) (area[i] ^ 'q');}// 利用字符输出流FileWriter将加密后的字符数组写入文件中/********** Begin **********/FileWriter fw = new FileWriter(file);fw.write(area);fw.flush();fw.close();/********** End **********/// 利用字符输入流FileReader读取文件,将密文输出/********** Begin **********/FileReader fr1 = new FileReader(file);char[] buf1 = new char[10];int n;System.out.println("密文:");while ((n = fr1.read(buf1)) != -1) {String s = new String(buf1);System.out.print(s);}System.out.println();fr1.close();/********** End **********/// 利用字符输入流FileReader读取文件,将密文转换为明文输出/********** Begin **********/FileReader fr2 = new FileReader(file);char[] buf2 = new char[10];System.out.println("明文:");while ((n = fr2.read(buf2)) != -1) {for (int i = 0; i < n; i++) {buf2[i] = (char) (buf2[i] ^ 'q');}String s = new String(buf2);System.out.print(s);}fr2.close();/********** End **********/}
}

二、字符输入/输出流实现发送电报

编程要求

根据提示,在右侧编辑器补充代码。

  • 电报内容经过加密后使用字符输出流存储在指定的文件中
  • 如果文件不存在,则创建文件
  • 使用字符输入流从文件中分别读取密文和明文的内容并显示出来
  • 利用异常处理机制处理可能发生的错误

注意:在对字符加密时采用了异或(^q)的简单字符加密处理,解密时也要进行逐个字符异或(^q)的处理。

测试说明

平台会对你编写的代码进行测试:

测试输入: 今晚10点发动总攻

预期输出: 密文: 亻昫@A烈厠務恊敊 明文: 今晚10点发动总攻

代码

package step2;
import java.io.*;
import java.util.Scanner;public class Encrypt {public static void main(String[] args) throws IOException {// 创建要发送的电报Scanner sc = new Scanner(System.in);String data = sc.next();// 将电报分割成字符数组/********** Begin **********/char[] area = data.toCharArray();/********** End **********/// 打开指定存放电报的文件,如果文件不存在,则创建File file = new File("data.txt");if (!file.exists()) {file.createNewFile();}// 循环遍历字符数组,将每个字符加密处理for (int i = 0; i < area.length; i++) {area[i] = (char) (area[i] ^ 'q');}// 利用字符输出流FileWriter将加密后的字符数组写入文件中/********** Begin **********/FileWriter fw = new FileWriter(file);fw.write(area);fw.flush();fw.close();/********** End **********/// 利用字符输入流FileReader读取文件,将密文输出/********** Begin **********/FileReader fr1 = new FileReader(file);char[] buf1 = new char[10];int n;System.out.println("密文:");while ((n = fr1.read(buf1)) != -1) {String s = new String(buf1);System.out.print(s);}System.out.println();fr1.close();/********** End **********/// 利用字符输入流FileReader读取文件,将密文转换为明文输出/********** Begin **********/FileReader fr2 = new FileReader(file);char[] buf2 = new char[10];System.out.println("明文:");while ((n = fr2.read(buf2)) != -1) {for (int i = 0; i < n; i++) {buf2[i] = (char) (buf2[i] ^ 'q');}String s = new String(buf2);System.out.print(s);}fr2.close();/********** End **********/}
}

三、简单TCP通信

编程要求

根据提示,在右侧编辑器补充代码,使用Socket和ServerSocket套接字编程,完成简单的TCP通信。

测试说明

平台会对你编写的代码进行测试:

测试输入:张三

预期输出: 你已经连上服务器了,告诉我你的姓名... 再见:张三

代码

package step3;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;public class Client {public static void main(String[] args) throws Exception {Server server = new Server();server.start();Scanner sc = new Scanner(System.in);//创建客户端Socket(s),指定服务器端IP地址和端口号/********** Begin **********/Socket s = new Socket("127.0.0.1", 8000);/**********  end  **********/DataOutputStream dos = new DataOutputStream(s.getOutputStream());DataInputStream dis = new DataInputStream(s.getInputStream());System.out.println(dis.readUTF());String name = sc.next();dos.writeUTF(name);System.out.println(dis.readUTF());s.close();}
}
package step3;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class Server extends Thread {@Overridepublic void run() {try {//创建服务器端ServerSocket(ss),指定端口号8000/********** Begin **********/ServerSocket ss =new ServerSocket(8000);/**********  end  **********/Socket s = ss.accept();DataOutputStream dos = new DataOutputStream(s.getOutputStream());DataInputStream dis = new DataInputStream(s.getInputStream());dos.writeUTF("你已经连上服务器了,告诉我你的姓名...");String name = dis.readUTF();dos.writeUTF("再见:" + name);s.close();} catch (IOException e) {e.printStackTrace();}}
}

四、TCP通信实现奇偶数判断

编程要求

根据提示,在右侧编辑器补充代码,对输入的整数进行奇偶性判断;当输入的整数为-1时,程序结束运行。

测试说明

平台会对你编写的代码进行测试:

测试输入:1 2 3 4 -1

预期输出: 请输入一个整数,我知道是奇数还是偶数 1是...奇数 2是...偶数 3是...奇数 4是...偶数

代码

 package step4;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;public class ClientPlus {public static void main(String[] args) {Scanner sc = new Scanner(System.in);ServerPlus server = new ServerPlus();server.start();try {//创建客户端Socket(s),指定服务器端IP地址和端口号/********** Begin **********/Socket s = new Socket("127.0.0.1", 8000);/**********  end  **********/DataOutputStream dos = new DataOutputStream(s.getOutputStream());DataInputStream dis = new DataInputStream(s.getInputStream());//客户端通过循环依次接收服务器返回的结果,并输入新的整数传递给服务器/********** Begin **********/while(true){System.out.println(dis.readUTF());String num = sc.next();dos.writeUTF(num);}/**********  end  **********/} catch (EOFException e) {} catch (IOException e) {e.printStackTrace();}}
}
package step4;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class ServerPlus extends Thread {@Overridepublic void run() {try {/********** Begin **********///创建服务器端ServerSocket(ss),指定端口号8000ServerSocket ss = new ServerSocket(8000);/**********  end  **********/Socket s = ss.accept();DataOutputStream dos = new DataOutputStream(s.getOutputStream());DataInputStream dis = new DataInputStream(s.getInputStream());ReceiveThread thread = new ReceiveThread(s, dos, dis);thread.start();} catch (IOException e) {e.printStackTrace();}}
}
 package step4;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.SocketException;class ReceiveThread extends Thread {DataOutputStream dos;DataInputStream dis;Socket s;public ReceiveThread(Socket s, DataOutputStream dos, DataInputStream dis) {this.s = s;this.dos = dos;this.dis = dis;}@Overridepublic void run() {try {dos.writeUTF("请输入一个整数,我知道是奇数还是偶数");while(true) {String num = dis.readUTF();if("-1".equals(num)) {s.close();break;} String result = (Integer.parseInt(num)%2==0)?"偶数":"奇数";dos.writeUTF(num + "是..." + result);}			} catch (SocketException e) {try {s.close();} catch (IOException e1) {e1.printStackTrace();}} catch (IOException e) {System.out.println("数据读取异常");} }	
}

相关文章:

实验六:Java流式编程与网络程序设计

一、字节输入/输出流实现数据的保存和读取 编程要求 根据提示&#xff0c;在右侧编辑器补充代码。 编写应用程序&#xff08;SortArray.java&#xff09;&#xff0c;使用字节输入/输出流实现数据的保存和读取。 要求功能如下&#xff1a; 输入1~100之间的整型数据保存到数组…...

金字塔原理

金字塔原理 来自于麦肯锡公司的第一位女性咨询顾问芭芭拉•明托的著作《金字塔原理》。 原理介绍 此原理是一种重点突出、逻辑清晰、主次分明的逻辑思路、表达方式和规范动作。 金字塔的基本结构是&#xff1a;中心思想明确&#xff0c;结论先行&#xff0c;以上统下&#xff…...

VR全景技术助力政务服务大厅数字化,打造全新政务服务体验

引言&#xff1a; 随着科技的飞速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术逐渐走进人们的视野。VR全景技术作为VR领域的一项重要应用&#xff0c;以其沉浸式、交互式的特点&#xff0c;正逐渐渗透到各行各业。政务服务大厅作为相关部门与民众之间的桥梁&#…...

使用Python实现SVM来解决二分类问题

下面是一个使用Python实现SVM来解决二分类问题的例子&#xff1a; # 导入所需的库 from sklearn.datasets import make_blobs from sklearn.model_selection import train_test_split from sklearn.svm import SVC import matplotlib.pyplot as plt# 生成一个二分类数据集 X, …...

合并PDF出现OOM异常

优化方法一&#xff1a;使用PdfSmartCopy类代替PdfCopy类。这个类可以在合并PDF文件时&#xff0c;检测并消除重复的对象&#xff0c;从而减少内存的占用。您可以参考以下代码示例&#xff1a; //创建一个Document对象 Document document new Document();//创建一个PdfSmartC…...

c语言-数据结构-链式二叉树

目录 1、二叉树的概念及结构 2、二叉树的遍历概念 2.1 二叉树的前序遍历 2.2 二叉树的中序遍历 2.3 二叉树的后序遍历 2.4 二叉树的层序遍历 3、创建一颗二叉树 4、递归方法实现二叉树前、中、后遍历 4.1 实现前序遍历 4.2 实现中序遍历 4.3 实现后序遍历 5、…...

DelayQueue介绍

5.1 DelayQueue介绍&应用 DelayQueue就是一个延迟队列&#xff0c;生产者写入一个消息&#xff0c;这个消息还有直接被消费的延迟时间。 需要让消息具有延迟的特性。 DelayQueue也是基于二叉堆结构实现的&#xff0c;甚至本事就是基于PriorityQueue实现的功能。二叉堆结构…...

centos8 redis 6.2.6源码安装+主从哨兵

文章目录 centos8 redis 6.2.6源码安装主从哨兵下载解压编译安装配置配置systemd服务启停及开机启动登录验证主从同步配置哨兵哨兵注册systemd centos8 redis 6.2.6源码安装主从哨兵 单机安装 下载解压 cd /data wget http://download.redis.io/releases/redis-6.2.6.tar.gz…...

机器学习之危险品车辆目标检测

危险品的运输涉及从离开仓库到由车辆运输到目的地的风险。监控事故、车辆运动动态以及车辆通过特定区域的频率对于监督车辆运输危险品的过程至关重要。 在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数…...

DHCP协议及实验omnipeek抓包工具分析 IPv4协议

一 抓包命令 adb shell tcpdump -i wlan0 -w /data/tcpdump.pcap 抓包后截图如下 二 DHCP是什么 2.1 DHCP定义 DHCP( Dynamic Host Configuration Protocol, 动态主机配置协议)定义: 存在于应用层(OSI) 前身是BOOTP(Bootstrap Protocol)协议 是一个使用UDP(User …...

考过了PMP,面试的时候应该怎么办?

近期喜番在后台收到了很多同学们的私信&#xff0c;表示自己已经过了8月份的PMP考试&#xff0c;开始着手往项目管理岗位转型&#xff0c;但是对于项目管理岗位的面试却一筹莫展。放轻松&#xff0c;大家的需求喜番都了解了&#xff0c;喜番给大家总结了一些项目经理在面试的时…...

技巧-PyTorch中num_works的作用和实验测试

简介 在 PyTorch 中&#xff0c;num_workers 是 DataLoader 中的一个参数&#xff0c;用于控制数据加载的并发线程数。它允许您在数据加载过程中使用多个线程&#xff0c;以提高数据加载的效率。 具体来说&#xff0c;num_workers 参数指定了 DataLoader 在加载数据时将创建的…...

Android:FragmentTransaction

上一篇Android&#xff1a;FragmentTransaction我们大概介绍了FragmentManager的大致工作流程&#xff0c;知道了每个动作都会添加到Op队列里&#xff0c;并由FragmentTransaction进行管理&#xff0c;那么我们就来看看FragmentTransaction的具体内容。 首先FragmentTransacti…...

5.golang字符串的拆解和拼接

字符串是 Go 中的字节切片。可以通过将一组字符括在双引号中来创建字符串" "。Go 中的字符串是兼容Unicode编码的&#xff0c;并且是UTF-8编码的。 访问字符串的单个字节或字符 由于字符串是字节切片&#xff0c;因此可以访问字符串的每个字节。 func printStr(s …...

配置 Mantis 在 Windows 上的步骤

配置 Mantis Bug Tracker 在 Windows 上的步骤 Mantis Bug Tracker 是一款开源的缺陷跟踪系统&#xff0c;用于管理软件开发中的问题和缺陷。在 Windows 环境下配置 Mantis 可以帮助开发者更方便地进行项目管理。以下是一个详细的教程&#xff0c;包含了 EasyPHP Devserver 和…...

Android 单元测试初体验(二)-断言

[TOC](Android 单元测试初体验(二)-断言) 前言 当初在学校学安卓的时候&#xff0c;老师敢教学进度&#xff0c;翻到单元测试这一章节的时候提了两句&#xff0c;没有把单元测试当重点讲&#xff0c;只是说我们工作中几乎不会用到&#xff0c;果真在之前的几年工作当中我真的没…...

通过ros系统中websocket中发送sensor_msgs::Image数据给web端显示

通过ros系统中websocket中发送sensor_msgs::Image数据给web端显示(一) 图片数据转成base64编码方式 #include <ros/ros.h> #include <signal.h> #include <sensor_msgs/Image.h> #include <message_filters/subscriber.h> #include <message_filt…...

【 Kubernetes 风云录 】- Istio 应用多版本流量控制

文章目录 原理实现DeploymentVirtualServiceDestinationRule 约束部署 目的: 根据不同的引擎版本&#xff0c;可以把请求发送到指定的引擎上。可以实现版本降级。 原理 Istio通过VirtualService和DestinationRule两个资源对象来实现流量管理&#xff0c;其中VirtualService用于…...

比尔盖茨:GPT-5不会比GPT-4好多少,生成式AI已达到极限

比尔盖茨一句爆料&#xff0c;成为机器学习社区热议焦点&#xff1a; “GPT-5不会比GPT-4好多少。” 虽然他已不再正式参与微软的日常运营&#xff0c;但仍在担任顾问&#xff0c;并且熟悉OpenAI领导团队的想法。 消息来自德国《商报》&#xff08;Handelsblatt&#xff09;对…...

let const 与var的区别

1、let可以形成块级作用域&#xff0c;在es6之前javascript只有函数作用域&#xff0c;没有块级作用域。在es6之前实现块级作用域: 2、可以看到通过一个立即执行函数表达式&#xff0c;我们实现了一个局部作用域或者块级作用域&#xff0c;但是有了let之后就不需要写这样的代…...

Carsim与Simulink联合仿真模型——AEB的cpar文件、simulink模型文件及...

Carsim与Simulink联合仿真模型——AEB 提供cpar文件&#xff0c;simulink模型文件&#xff0c;模型搭建过程文档在汽车开发领域&#xff0c;安全系统始终占据着举足轻重的地位。其中&#xff0c;主动安全辅助系统&#xff08;AEB&#xff09;作为现代汽车的安全核心&#xff0c…...

让效率飞起来!用拖把更名器将文件整理时间缩短90%

在当今快节奏的工作环境中&#xff0c;效率就是竞争力。同样的工作任务&#xff0c;别人需要一小时完成&#xff0c;你只需十分钟&#xff0c;这就是实实在在的优势。 文件整理是许多人日常工作中不可或缺的一部分&#xff0c;而批量文件重命名又是文件整理中的常见任务。 如果…...

聚焦播放器全链路优化

播放器开发属于音视频领域中独立性强、技术壁垒高的方向。多线程调度各模块是避免任务堵塞、提高并发处理效率的关键。下面从全链路模块展开播放器性能优化与低延迟方案分析&#xff1a;采集模块。本地流指本地文件的读取或者是摄像头或者麦克风数据的读取。以RV1126摄像头为例…...

零基础GDScript编程:3天从游戏小白到开发者的完整指南

零基础GDScript编程&#xff1a;3天从游戏小白到开发者的完整指南 【免费下载链接】learn-gdscript Learn Godots GDScript programming language from zero, right in your browser, for free. 项目地址: https://gitcode.com/gh_mirrors/le/learn-gdscript 想学游戏开…...

BilibiliDown场景化使用指南:从新手到专家的B站视频管理方案

BilibiliDown场景化使用指南&#xff1a;从新手到专家的B站视频管理方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mir…...

终极指南:用Mesa轻松构建智能Agent仿真模型,快速探索复杂系统

终极指南&#xff1a;用Mesa轻松构建智能Agent仿真模型&#xff0c;快速探索复杂系统 【免费下载链接】mesa Mesa is an open-source Python library for agent-based modeling, ideal for simulating complex systems and exploring emergent behaviors. 项目地址: https://…...

DankDroneDownloader终极指南:无人机固件逆向工程与版本控制深度解析

DankDroneDownloader终极指南&#xff1a;无人机固件逆向工程与版本控制深度解析 【免费下载链接】DankDroneDownloader A Custom Firmware Download Tool for DJI Drones Written in C# 项目地址: https://gitcode.com/gh_mirrors/da/DankDroneDownloader DankDroneDow…...

联想拯救者工具箱:释放游戏本性能的终极免费解决方案

联想拯救者工具箱&#xff1a;释放游戏本性能的终极免费解决方案 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 联想拯救者…...

Awoo Installer:Switch游戏安装全场景解决方案的技术突破与实践指南

Awoo Installer&#xff1a;Switch游戏安装全场景解决方案的技术突破与实践指南 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer Awoo Installer作为…...

ElegantBook LaTeX模板技术解析:中文书籍排版系统架构与实战应用

ElegantBook LaTeX模板技术解析&#xff1a;中文书籍排版系统架构与实战应用 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook ElegantBook作为LaTeX中文书籍排版的专业解决方案&#xff0c;通…...