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

下载本文档

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

文档简介

1、Java 技术实验实验( 三 ): 四号机房2014 年 12 月 15 日学院计算机与信息学院专业班级计算机科学与技术 13-3学号2013211698实验名称基于 GUI 的网络通信程序设计指导教师教师评语教师签名:年月日一、实验目的掌握 Java 中 GUI 程序的编写,包括事件机制。掌握 Java 的网络通信编程,ServerSocket,Socket 类的使用。 3掌握 Java 中多线程的编程,Thread 类,Runnable 接口的使用。 4掌握用面象的方法分析和解决复杂问题。二、实验原理继承 JFrame 类创建两个类服务器,使之界面画。并且利用事件器对界面的操作做出相应反应

2、。其中通过实现 Runnable 线程类来同步其中的。三、使用硬件、环境PC 计算机一台,配置为 CPU 为 1.5G,内存为 512M,硬盘为 40G,安装 WindowsXP 操作系统。另外,使用 JCreator,JDK1.6.0 等四、实验过程、步骤及原始(算法、原程序、,分析等)源程序:1.接受器: package business;import java.io.EOFException; import java.io.IOException; import java.io.ObjectInputStream;import java.io.ObjectOutputStream; im

3、port .Socket;import tools.Constant; import graphic.MainCnt;public class Cnt private MainCnt frame;private ObjectOutputStream out;private ObjectInputStream in;private Socket socket;public Cnt() frame = new MainCnt(); frame.setVisible(true);cnt_start();public void cnt_start() try / 请求连接frame.show(连接中,

4、请稍候);socket = new Socket(Constant.SERVER_HOST, Constant.LISTEN_PORT);/ 连接建立frame.show(连接到: + socket.getInetAddress().getHostName();frame.show();out = new ObjectOutputStream(socket.getOutputStream(); frame.setOut(out);/ 保持通信in = new ObjectInputStream(socket.getInputStream(); String message = ;while (

5、true) try message = (String) in.readObject();if (message.equals(Constant.CONNECT_QUIT) frame.setOut(null);break;frame.show(服务器端 + message); catch (Exception e) e.prStackTrace();/ 结束连接frame.show(对不起,服务器已经断开!); olose();in.close(); socket.close(); catch (EOFException eofException) System.out.prln(服务器连接

6、终止); catch (IOException ioException) ioException.prStackTrace();public sic void main(String args) new Cnt();2.服务器:package business;import java.io.EOFException; import java.io.IOException; import java.io.ObjectInputStream;import java.io.ObjectOutputStream; import .ServerSocket; import .Socket;import

7、tools.Constant; import graphic.MainServer;public class Server private MainServer frame;private ObjectOutputStream out;private ObjectInputStream in;private ServerSocket serverSocket;private Socket socket;privatecounter = 1;public Server() frame = new MainServer(); frame.setVisible(true); server_start

8、();private void server_start() try serverSocket = new ServerSocket(Constant.LISTEN_PORT, 20); while (true) / 等待连接frame.show(等待连接,请稍候); socket = serverSocket.accept();/ 建立连接frame.show(已与客户端 + socket.getInetAddress().getHostName()+ 建立连接!);frame.show();out = new ObjectOutputStream(socket.getOutputStrea

9、m(); frame.setOut(out);/ out.writeObject(服务器端 连接成功);out.flush();/ 保持通信in = new ObjectInputStream(socket.getInputStream(); String message = ;while (true) try message = (String) in.readObject(); System.out.prln(message);if (message.equals(Constant.CONNECT_QUIT) frame.setOut(null);break;frame.show(客户端

10、+ message); catch (Exception e) e.prStackTrace();/ 结束连接frame.show(客户端 + socket.getInetAddress().getHostName()+ 中断了连接!);olose();in.close(); socket.close();+counter; catch (EOFException eofException) eofException.prStackTrace(); catch (IOException ioException) ioException.prStackTrace();/ main()方法publ

11、ic sic void main(String args) new Server();3.接受器界面 package graphic;import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimen; import java.awt.FlowLayout;import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.

12、event.WindowEvent; import java.io.IOException;import java.io.ObjectOutputStream; import javax.swing.JButton;import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import tools.Constant;public class MainCnt ex

13、tends JFrame private JScrollPane scrollPane1;private JTextArea ta_show;private JPanel panel1;private JTextField tf_message;private JButton btn_send;private finalSHOW_ROWS = 11;private ObjectOutputStream out;public MainCnt() ponents();private voidponents() scrollPane1 = new JScrollPane(); ta_show = n

14、ew JTextArea(); panel1 = new JPanel(); tf_message = new JTextField(); btn_send = new JButton();setTitle(Cnt-客户端程序);/ 设置标题addWindowListener(new WindowAdapter() public void WindowsClosing(WindowEvent e) thisGraphicClosing(e););Container contentPane = getContentPane(); contentPatLayout(new BorderLayout

15、();/ 添加 scrollPane1ta_show.setRows(SHOW_ROWS);ta_show.setEditable(false); scrollPane1.setViewportView(ta_show);contentPane.add(scrollPane1, BorderLayout.SOUTH);/ 添加 panel1panel1.setLayout(new FlowLayout(); tf_message.setPreferredSize(new Dimen(320, 25); panel1.add(tf_message);btn_send.setText(Send);

16、 btn_send.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) btn_sendActionPerformed(e););panel1.add(btn_send);contentPane.add(panel1, BorderLayout.NORTH); pack();setLocationRelativeTo(getOwner(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);private void btn_sendActi

17、onPerformed(ActionEvent e) try out.writeObject(tf_message.getText(); out.flush();tf_message.setText(); catch (IOException ie) ie.prStackTrace();private void thisGraphicClosing(WindowEvent e) if (out != null) try out.writeObject(Constant.CONNECT_QUIT); out.flush(); catch (IOException ie) ie.prStackTr

18、ace();public void setOut(ObjectOutputStream out) this.out = out;public void show(String mess) ta_show.append(mess + n);ta_show.setCaretition(ta_show.getText().length();4.服务器界面package graphic;import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimen;import java.awt.FlowLayout;imp

19、ort java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent; import java.io.IOException;import java.io.ObjectOutputStream; import javax.swing.JButton;import javax.swing.JFrame; import javax.swing.JPanel; import javax.swi

20、ng.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import tools.Constant;public class MainServer extends JFrame private JScrollPane scrollPane1;private JTextArea ta_show;private JPanel panel1;private JTextField tf_message;private JButton btn_send;private finalSHOW_ROWS = 11

21、;private ObjectOutputStream out;public MainServer() ponents();private voidponents() scrollPane1 = new JScrollPane(); ta_show = new JTextArea(); panel1 = new JPanel(); tf_message = new JTextField(); btn_send = new JButton(); setTitle(Server-服务器端程序);addWindowListener(new WindowAdapter() public void Wi

22、ndowsClosing(WindowEvent e) thisGraphicClosing(e););Container contentPane = getContentPane(); contentPatLayout(new BorderLayout();ta_show.setRows(SHOW_ROWS); ta_show.setEditable(false); scrollPane1.setViewportView(ta_show);contentPane.add(scrollPane1, BorderLayout.SOUTH);panel1.setLayout(new FlowLay

23、out();/ - tf_message -tf_message.setPreferredSize(new Dimen(320, 25); panel1.add(tf_message);/ - btn_send -btn_send.setText(Send); btn_send.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) btn_sendActionPerformed(e););panel1.add(btn_send);contentPane.add(panel1, BorderLayout.NORTH); pack();setLocationRelativeTo(getOwner(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);private void btn_sendActionPerformed(ActionEvent e) try out.writeObject(tf_message.getText(); out.flush();tf_message.setText(); catch (IOException ie) ie.prStackTrace();private v

温馨提示

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

评论

0/150

提交评论