1、《Java程序设计》实验报告 --实验3 实验室: 2014 年 12 月 10 日 学院 计算机与信息学院 专业班级 姓名 成绩 课程 名称 Java程序设计 实验项目 名 称 实验三 基于GUI的网络通信程序设计 指导 教师 教师评语 教师签名:
2、 年 月 日 一、 实验目的 1.掌握Java中GUI程序的编写,包括事件监听机制。 2.掌握Java的网络通信编程,ServerSocket,Socket类的使用。 3.掌握Java中多线程的编程,Thread类,Runnable接口的使用。 4.掌握用面向对象的方法分析和解决复杂问题。 二、 实验原理 1. 利用java.awt和javax.swing包提供的各种组件实现服务器和客户端的界面设计。 2.使用套接字实现基于TCP协议的服务器和客户端。 3.为服务器和客户端界面中的有关组件添加消息相应,实现交互。 三、使用硬件、软件环境
3、 PC 计算机一台,配置为CPU为2.6G,内存为4G,硬盘为1T,安装Windows8操作系统。 另外,使用JCreator,JDK1.8.0等软件 四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等) 1.实验过程: 首先实现界面的编写,之后使用套接字实现基于TCP协议的通信,再设置监视 器,为相应的组件添加消息相应。 2.源程序: 1.客户端程序:KeHuDuan.java import java.awt.*; import java.awt.event.*; import java.util.*; import java.io.
4、 import .*; import javax.swing.*; public class KeHuDuan{ public static void main(String[] args){ MyFrame client = new MyFrame(); client.setVisible(true); client.setResizable(false); client.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } } class MyFrame extends JFrame{
5、 JTextField ip; JTextField port; JTextField cin; JTextArea content; JButton connect; JButton say; Socket socket; MyFrame(){ init(); ConnectListen cListener = new ConnectListen(); SayListen sListener = new SayListen(); connect.addActionListener(cListener); say.addActionLi
6、stener(sListener); } void init(){ setLayout(new FlowLayout()); setSize(400,400); setLocation(800,100); add(new JLabel("Serve ip")); ip = new JTextField("127.0.0.1",8); add(ip); add(new JLabel("Serve port")); port = new JTextField("8888",8); add(port);
7、connect = new JButton("connect"); add(connect); content = new JTextArea(16,35); JScrollPane scroll = new JScrollPane(content); add(scroll); add(new Label("Say:")); cin = new JTextField(25); add(cin); say = new JButton("say"); add(say); } class ConnectListen
8、implements ActionListener{ int portNum; public void actionPerformed(ActionEvent e){ connect.setEnabled(false); try { portNum =Integer.parseInt(port.getText()); socket = new Socket(ip.getText(),portNum); ClientThread ct = new ClientThread(); ct.start(); }
9、 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); str=cin.getText()
10、 if(!str.isEmpty()){ out.println(str); content.append("me:"+str+"\n"); out.flush(); } cin.setText(""); } catch (Exception ex) { } } } class ClientThread extends Thread{ public void run(){ try { BufferedReader in = new Buffere
11、dReader(new InputStreamReader(socket.getInputStream())); String str; while(true){ str = in.readLine(); //System.out.println ("\a"); content.append(str+"\n"); } } catch (Exception ex) { } } } } 2.服务器端程序:import java.awt.*; import
12、java.awt.event.*; import java.util.*; import java.io.*; import .*; import javax.swing.*; public class FuWuQi{ public static void main(String[] args){ MyFrame serve = new MyFrame(); serve.setVisible(true); serve.setResizable(false); serve.setDefaultCloseOperation(JFrame.DISPOSE_O
13、N_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);
14、 say.addActionListener(stListen); } void init(){ setLayout(new FlowLayout()); setSize(400,400); setLocation(400,100); add(new JLabel("Port:")); port = new JTextField("8888",25); add(port); start = new JButton("Start"); add(start); content = new JTextArea(15,35);
15、 JScrollPane scroll = new JScrollPane(content); add(scroll); add(new JLabel("Say:")); cin = new JTextField(26); add(cin); say = new JButton("Say"); add(say); } class StartListen implements ActionListener{ public void actionPerformed(ActionEvent e){ start.setEnabled
16、false); try { ServerSocket s = new ServerSocket(Integer.parseInt(port.getText())); socket = s.accept(); PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); out.println("连接成功"); content.append("连接成功"+"\n");
17、 ServerThread st = new ServerThread(); st.start(); } catch (Exception ex) { } } } class SayListen implements ActionListener{ String str; public void actionPerformed(ActionEvent e){ try { PrintWriter out = new PrintWriter(new BufferedWriter(new Out
18、putStreamWriter(socket.getOutputStream())),true); str=cin.getText(); if(!str.isEmpty()){ out.println(str); content.append("me:"+str+"\n"); out.flush(); } cin.setText(""); } catch (Exception ex) { } } } class ServerThread extends Threa
19、d{ public void run(){ try { BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String str; while(true){ str = in.readLine(); content.append(str+"\n"); } } catch (Exception ex) { } }
20、} } 3. 测试结果: 五、实验结论、分析、思考题与心得体会 通过本次实验,我有以下几方面的收获、认识和体会: 1.学会了编写带有图形化界面的程序。 2.简单掌握了JFrame、JLabel、JTextField、JButton和JPanel等组件的 方法。 3. 能够独立解决部分编译和执行过程中的错误信息。 4. 掌握事件处理的方法和常用的布局管理器。 其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。 二.培训的及要求培训目的 安全生产目标责任书
21、 为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标: 一、目标值: 1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。 2、现金安全保管,不发生盗窃事故。 3、每月足额提取安全生产费用,保障安全生产投入资金的到位。 4、安全培训合格率为100%。 二、本单位安全工作上必须做到以下内容: 1、对本单位的安全生产负直接领导责任,必须模范遵守公司的各项安全管理制度,不发布与公司安全管理制度相抵触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。 2、保证公司各项
22、安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。 3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期、质量”发生矛盾时,坚持安全第一的原则。 4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生产任务时,必须安排安全工作内容,并写入记录。 5、在公司及政府的安全检查中杜绝各类违章现象。 6、组织本部门积极参加安全检查,做到有检查、有整改,记录全。 7、以身作则,不违章指挥、不违章操作。对发现的各类违章现象负有查禁的责任,同时要予以查处。 8、虚心接受员工提出的问题,杜绝不接受或盲目指挥;
23、 9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。 10、必须按规定对单位员工进行培训和新员工上岗教育; 11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。 三、 安全奖惩: 1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。 2、每月接受主管领导指派人员对安全生产责任状的落 其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能
24、训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。 二.培训的及要求培训目的 安全生产目标责任书 为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标: 一、目标值: 1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。 2、现金安全保管,不发生盗窃事故。 3、每月足额提取安全生产费用,保障安全生产投入资金的到位。 4、安全培训合格率为100%。 二、本单位安全工作上必须做到以下内容: 1、对本单位的安全生产负直接领导责任,必须模范遵守公司的各项安全管理制度,不发布与公司安全管理制度相抵
25、触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。 2、保证公司各项安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。 3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期、质量”发生矛盾时,坚持安全第一的原则。 4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生产任务时,必须安排安全工作内容,并写入记录。 5、在公司及政府的安全检查中杜绝各类违章现象。 6、组织本部门积极参加安全检查,做到有检查、有整改,记录全。 7、以身作则,不违章指挥、不违章操作。
26、对发现的各类违章现象负有查禁的责任,同时要予以查处。 8、虚心接受员工提出的问题,杜绝不接受或盲目指挥; 9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。 10、必须按规定对单位员工进行培训和新员工上岗教育; 11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。 三、 安全奖惩: 1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。 2、每月接受主管领导指派人员对安全生产责任状的落 8 / 8






