计算机科学与技术13-3中java实验三_第1页
计算机科学与技术13-3中java实验三_第2页
计算机科学与技术13-3中java实验三_第3页
计算机科学与技术13-3中java实验三_第4页
计算机科学与技术13-3中java实验三_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java 技术实验实验( 三 ):2014 年12 月11 日学院计算机与信息学院专业班级计算机科学与技术 13-3 班中学号2013211696实验名称Java 开发环境的安装与配置指导教师、教师评语教师签名:年月日一、实验目的掌握 Java 中 GUI 程序的编写,包括事件机制。掌握 Java 的网络通信编程,ServerSocket,Socket 类的使用。 3掌握 Java 中多线程的编程,Thread 类,Runnable 接口的使用。 4掌握用面象的方法分析和解决复杂问题。二、实验原理编写程序完成以下功能:(1) 设计一个基于 GUI 的客户-服务器的通信应用程序,如图 1,图 2

2、所示。图 1 Socket 通信服务器端界面图 2 Socket 通信客户端界面图 1 为Socket 通信服务器端界面,点击该界面中的【Start】按钮,启动服务器服务(在图 1 界面中间的多行文本区域显示 “Server starting”字样)。图 2 为 Socket 通信客户端界面,点击该界面中的【Connect】按钮与服务器建立,并在图 2 所示界面中间的多行文本区域显示“Connect to server”字样,当服务器端到客户端的连接后,在图 1 界面中间的多行文本区域追加一行“Cnt connected”字样,并与客户端建立Socket 连接。当图 1 所示的服务器端和图 2

3、 所示的客户机端建立 Socket 连接后,编程实现这两端的数据通信,每次将接收到对方的数据追加显示在多行文本框中。三、使用硬件、环境PC 计算机一台,配置为 CPU 为 2.50GHZ,内存 8G,硬盘为 1T,安装 Windows8.1另外,使用 JCreator,JDK1.6.0 等四、实验过程、步骤及原始(算法、原程序、,分析等)Cnt:package 基于 GUI 的网络通信;import java.awt.*; import java.awt.event.*; import java.io.*; import .*;import javax.swing.*; import java

4、x.swing.border.*;SuppressWarnings(serial)/ Eclipse 快速修正加的东西,不知道是干嘛的class CntFrame extends JFrame Socket cnt = null; / 客户端套接字JTextField port = new JTextField(4000, 10); JTextField ip = new JTextField(127.0.0.1, 10); JButton connect = new JButton(Connect); JTextArea ta = new JTextArea(10, 42); JTextFi

5、eld sayTF = new JTextField(32);JButton say = new JButton(Say); CFListener cfListener = new CFListener();CntFrame(String title) super(title);init(); connect.addActionListener(cfListener); say.addActionListener(cfListener);/ 将两个按钮的监视器到事件源addWindowListener(new WindowAdapter() public void windowClosing(

6、WindowEvent e) / 窗口监视器,用于关闭窗口。try cnt.close(); catch (Exception ee) ee.prStackTrace();System.exit(0););setVisible(true);void init() / 按照 BorderLayout 格局初始化窗口中各组件的位置setSize(480, 320);setResizable(false); / 用户不能自行调整大小JPanel North = new JPanel();Nordd(new JLabel(Server IP:); Nordd(this.ip);Nordd(new JL

7、abel(Servort:); Nordd(this.port);Nordd(this.connect);TitledBorder title = BorderFactory.createTitledBorder(客户机设置); North.setBorder(title); / 添加带标题的边框this.add(North, BorderLayout.NORTH);JPanel Center = new JPanel(); Center.add(this.ta);this.add(Center, BorderLayoENTER);Border taborder = BorderFactory

8、.createEtchedBorder(); ta.setBorder(taborder); / 为 JTextArea 添加带浮雕效果的边框JPanel South = new JPanel(); Soudd(new Label(Say:); Soudd(this.sayTF);Soudd(this.say); this.add(South, BorderLayout.SOUTH);class CFListener implementionListener / 创建监视器类public void actionPerformed(ActionEvent e) String s =mand();

9、 / 获得时间命令if (Connect = s) try connect.setEnabled(false); / 设置 Connect 按钮不可用i =egarse(port.getText(); ta.append(Connect to server.n);ta.paImmediay(ta.getBounds(); / 立即刷新文本区域显示文字cnt = new Socket(ip.getText(), i); / 建立连接ta.append(Connected!n);CntThread cfCT = new CntThread(); / 新建用于通信的进程cfCT.start(); c

10、atch (Exception ce) ce.prStackTrace(); else if (Say = s) try String str = sayTF.getText(); PrWriter cc = newPrWriter(cnt.getOutputStream();if (str != ) cc.write(str + n); cc.flush(); ta.append(str + n);sayTF.setText(); / 清空 say 文本框 catch (Exception se) se.prStackTrace();class CntThread extends Threa

11、d / 通信线程public void run() try BufferedReader br = new BufferedReader(new InputStreamReader( cnt.getInputStream(); / 用 BufferedReader 来读取服务器的信息流String s = br.readLine();while (!Server say:bye.equals(s) & s != null) ta.append(s + n); / 在 JTextArea 显示信息 s = br.readLine(); catch (Exception re) re.prStac

12、kTrace();public class Cnt public sic void main(String args) CntFrame cf = new CntFrame(客户端);Server:package 基于 GUI 的网络通信;import java.awt.*; import java.awt.event.*; import java.io.*; import .*; import javax.swing.*;import javax.swing.border.*;SuppressWarnings(serial)/ Eclipse 快速修正加的东西,不知道是干嘛的class Se

13、rverFrame extends JFrame ServerSocket server = null; / 服务器套接字 Socket cnt = null; / 客户端套接字JTextField port = new JTextField(4000, 32); JButton start = new JButton(Start); JTextArea ta = new JTextArea(10, 42); JTextField sayTF = new JTextField(32); JButton say = new JButton(Say);SFListener sfListener =

14、 new SFListener();ServerFrame(String title) super(title);init(); start.addActionListener(sfListener); say.addActionListener(sfListener);/ 将两个按钮的监视器到事件源addWindowListener(new WindowAdapter() / 窗口监视器,用于关闭窗口。public void windowClosing(WindowEvent e) try server.close(); catch (Exception ee) ee.prStackTrac

15、e();System.exit(0););this.setVisible(true);void init() / 按照 BorderLayout 格局初始化窗口中各组件的位置setSize(480, 320);setResizable(false); / 用户不能自行调整大小JPanel North = new JPanel(); Nordd(new JLabel(Port:); Nordd(this.port);Nordd(this.start);TitledBorder title = BorderFactory.createTitledBorder(服务器设置);North.setBor

16、der(title); / 添加带标题的边框this.add(North, BorderLayout.NORTH);JPanel Center = new JPanel();Border taborder = BorderFactory.createEtchedBorder(); ta.setBorder(taborder); / 为 JTextArea 添加带浮雕效果的边框 Center.add(this.ta);this.add(Center, BorderLayoENTER);JPanel South = new JPanel(); Soudd(new Label(Say:); Soud

17、d(this.sayTF);Soudd(this.say); this.add(South, BorderLayout.SOUTH);class SFListener implementionListener / 创建监视器类public void actionPerformed(ActionEvent e) String s =mand(); / 获得事件命令if (Start = s) try start.setEnabled(false); / 设置 Start 按钮不可用i =egarse(port.getText(); ta.append(Server starting.n);ta.

18、paImmediay(ta.getBounds(); / 立即刷新文本区域显示文字server = new ServerSocket(i);cnt = server.accept(); / 建立连接ta.append(Cnt connected.n);ServerThread sfST = new ServerThread(); / 新建用于通信的线程sfST.start(); catch (Exception ce) ce.prStackTrace(); else if (Say = s) try PrWriter ss = newPrWriter(cnt.getOutputStream(); / 获得客户端发来的信息String str = sayTF.getText(); if (str != ) ta.append(str + n);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论