合工大Java实验报告(5)
五、实验结论、分析、思考题与心得体会 通过本次实验,我对于Java语言关于输入输出流的部分有了一定的了解,下面是我的一些收获: 1. 掌握Java I/O基本原理:Java中的IO包中的类可以处理不同类型的流,例如:字节流(byte[])、字符流(character)、文件流、对象流等。 java.io中的抽象类包括:处理字节流的抽象类:InputStream和OutputStream,处理过滤流的抽象类:FilterOutputStream和FilterInputStream,处理字符流的抽象类:Reader和Writer,处理压缩流的抽象类:InflaterInputStream和DeflaterOutputStream 2.学会如何使用Java给出的各种输入输出流来实现一系列的问题,包括:从文件的读取数据、使用输出流对数据进行加工存储到文件中等。 3.掌握了FileInputStream、FileOutputStream抽象类的基本使用方法,并实际操作实现了读取与存储拷贝。 4.掌握了FileReader、FileWriter、BufferedReader、BufferedWriter抽象类的基本使用方法,实现修改读取的内容,添加内容存储进入文件中。
实验四 基于GUI的网络通信程序设计
学院 课程 名称 教信息工程系 Java技术 专业 班级 实验项目 名 称 姓名 学号 指导教师 成绩 实验四 基于GUI的网络通信程序设计 师 评 教师签名: 语 年 月 日 一、实验目的 1. 掌握Java中GUI程序的编写,包括事件监听机制。 2. 掌握Java的网络通信编程,ServerSocket,Socket类的使用。 3. 掌握Java中多线程的编程,Thread类,Runnable接口的使用。 4. 掌握用面向对象的方法分析和解决复杂问题。 二、实验原理 使用Java Swing中的组件实现GUI程序的编写,包括使用监听器、ServerSocket,Socket类实现输入输出数据。 同时使用Thread类,Runnable接口,实现多线程执行程序。 (1)设计一个基于GUI的客户-服务器的通信应用程序,如图1,图2所示。 图1 Socket通信服务器端界面 图2 Socket通信客户端界面 (2)图1为Socket通信服务器端界面,点击该界面中的【Start】按钮,启动服务器监听服务(在图1界面中间的多行文本区域显示“Server starting?”字样)。图2为Socket通信客户端界面,点击该界面中的【Connect】按钮与服务器建立链接,并在图2所示界面中间的多行文本区域显示“Connect to server?”字样,当服务器端监听到客户端的连接后,在图1界面中间的多行文
本区域追加一行“Client connected?”字样,并与客户端建立Socket连接。 (3)当图1所示的服务器端和图2所示的客户机端建立Socket连接后,编程实现这两端的数据通信,每次将接收到对方的数据追加显示在多行文本框中。 三、使用硬件、软件环境 硬件环境:i5-7200U+8G内存+256G硬盘 软件环境:Windows 10操作系统 开发工具:Eclipse 四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等) 1、编写两个文件Client.java 与Server.java,两个Java文件的内容相似,首先在构造方法中写了调用了实现GUI的函数,即使用 JFrame类建立窗口,以及加入相应的组件,使用FlowLayout布局,,也为按钮注册了监听器。在不同的内部类中写了不同监听器所调用的actioPerformed()方法。 通过写一个主类,与一个实现类,主类通过创建实现类的对象来调用其构造方法来实现功能。实现类中包括各种方法与内部类通过方法的层层调用,来实现所需要的结果。 2、在服务器中创建ServerSocked对象来接受客户端的连接请求,并指定端口号,客户端通过Socket对象与客户端的Socket对象连接。连接成功后通过IO流来通信,服务器的输入流是客户端的输出流,服务器的输出流是客户端的输入流,通过BufferedReader读取相应套接字 socket 中获取的输入流的内容,并放入对应的文本框中。 服务器代码: import java.awt.*; import java.awt.event.*; import java.util.*; import java.io.*; import java.net.*; import javax.swing.*; public class Server{ public static void main(String[] args){ MyFrame serve = new MyFrame(); serve.setTitle(\服务器\); serve.setVisible(true);
serve.setResizable(false); //设置此窗体是否可由用户调整大小 serve.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置默认关闭操作 } } class MyFrame extends JFrame{ JTextField port; JButton start; JTextArea content; JTextField cin; JButton say; Socket socket; MyFrame(){ init(); StartListen sListen = new StartListen(); SayListen stListen = new SayListen(); start.addActionListener(sListen); //为按钮 start 注册一个监听器 say.addActionListener(stListen); //为按钮 say注册一个监听器 } void init(){ setLayout(new FlowLayout()); //设置窗体为流式布局 setSize(400,400); setLocation(400,100); add(new JLabel(\)); port = new JTextField(\,25); add(port); start = new JButton(\); add(start); content = new JTextArea(15,35); JScrollPane scroll = new JScrollPane(content); //设置滚动条 add(scroll); add(new JLabel(\)); cin = new JTextField(\!\,26); add(cin); say = new JButton(\); add(say); } class StartListen implements ActionListener{ public void actionPerformed(ActionEvent e){ start.setEnabled(false);
try { ServerSocket s = new ServerSocket(Integer.parseInt(port.getText())); // 创建一个服务器套接字对象 s,形参为从 port 文本框中读取的整型(端口号) socket = s.accept(); PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);// 创建一个打印输出流对象,其形参为从套接字 socket 对象中获取的输出流 out.println(\); content.append(\+\); //对两个字符串进行拼接 ServerThread st = new ServerThread(); //创建一个 ServerThread 对象st,并调用其构造方法 st.start(); //启动一个线程,并调用 run()方法 } catch (Exception ex) {} } } class SayListen implements ActionListener{ String str; public void actionPerformed(ActionEvent e){ try {PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);// 创建一个打印输出流,形参为从套接字socket 中获取的输出流 str=cin.getText(); if(!str.isEmpty()){ out.println(new Date()+\+str); //打印输出日期和发送的消息( str) content.append(new Date()+\+str+\); out.flush(); //清空缓存区 } cin.setText(\); } catch (Exception ex) {} } } class ServerThread extends Thread{ public void run(){ try { BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); //创建一个缓冲输出流,其形参为从套接字 socket 中获取的输入流 String str; while(true){
…… 此处隐藏:2422字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




