1、-_Java 程序设计实验报告-实验 3实验室: 2014 年 12 月 10 日学院 计算机与信息学院 专业班级 姓名 成绩课程名称 Java 程序设计实验项目名 称实验三 基于 GUI 的网络通信程序设计指导教师教师评语教师签名:年 月 日1、实验目的1掌握 Java 中 GUI 程序的编写,包括事件监听机制。2掌握 Java 的网络通信编程,ServerSocket,Socket 类的使用。3掌握 Java 中多线程的编程,Thread 类,Runnable 接口的使用。4掌握用面向对象的方法分析和解决复杂问题。2、实验原理1. 利用 java.awt 和 javax.swing 包提供
2、的各种组件实现服务器和客户端的界面设计。2使用套接字实现基于 TCP 协议的服务器和客户端。3.为服务器和客户端界面中的有关组件添加消息相应,实现交互。三、使用硬件、软件环境PC 计算机一台,配置为 CPU 为 2.6G,内存为 4G,硬盘为 1T,安装 Windows8 操作系统。另外,使用 JCreator,JDK1.8.0 等软件四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等) 1.实验过程:首先实现界面的编写,之后使用套接字实现基于 TCP 协议的通信,再设置监视 器,为相应的组件添加消息相应。2.源程序:1.客户端程序:KeHuDuan.javaimport java.
3、awt.*;import java.awt.event.*;import java.util.*;import java.io.*;import .*;import javax.swing.*;-_public class KeHuDuanpublic static void main(String args)MyFrame client = new MyFrame();client.setVisible(true);client.setResizable(false);client.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);class
4、 MyFrame extends JFrameJTextField 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.addActionListener(sListener);vo
5、id 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);connect = new JButton(“connect“);add(connect);content = new JTextArea(16,35);JScrollP
6、ane scroll = new JScrollPane(content);add(scroll);add(new Label(“Say:“);cin = new JTextField(25);add(cin);say = new JButton(“say“);add(say);-_class ConnectListen implements ActionListenerint portNum;public void actionPerformed(ActionEvent e)connect.setEnabled(false);try portNum =Integer.parseInt(por
7、t.getText();socket = new Socket(ip.getText(),portNum);ClientThread ct = new ClientThread();ct.start();catch (Exception ex) class SayListen implements ActionListenerString str;public void actionPerformed(ActionEvent e)try PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(soc
8、ket.getOutputStream(),true);str=cin.getText();if(!str.isEmpty()out.println(str);content.append(“me:“+str+“n“);out.flush();cin.setText(“);catch (Exception ex) class ClientThread extends Threadpublic void run()try BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream();Str
9、ing str;while(true)str = in.readLine();/System.out.println (“a“);content.append(str+“n“);-_catch (Exception ex) 2.服务器端程序:import java.awt.*;import java.awt.event.*;import java.util.*;import java.io.*;import .*;import javax.swing.*;public class FuWuQipublic static void main(String args)MyFrame serve =
10、 new MyFrame();serve.setVisible(true);serve.setResizable(false);serve.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);class MyFrame extends JFrameJTextField port;JButton start;JTextArea content;JTextField cin;JButton say;Socket socket;MyFrame()init();StartListen sListen = new StartListen();SayList
11、en stListen = new SayListen();start.addActionListener(sListen);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 JTextA
12、rea(15,35);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 ActionListenerpublic void actionPerformed(ActionEvent e)start.setEnabled(false);try ServerSocket s = new Server
13、Socket(Integer.parseInt(port.getText();socket = s.accept();PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),true);out.println(“连接成功“);content.append(“连接成功“+“n“);ServerThread st = new ServerThread();st.start(); catch (Exception ex) class SayListen i
14、mplements ActionListenerString str;public void actionPerformed(ActionEvent e)try PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),true);str=cin.getText();if(!str.isEmpty()out.println(str);content.append(“me:“+str+“n“);out.flush();cin.setText(“);cat
15、ch (Exception ex) -_class ServerThread extends Threadpublic 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) 3.测试结果:五、实验结论、分析、思考题与心得体会通过本次实验,我有以下几方面的收获、认识和体会:1.学会了编写带有图形化界面的程序。2.简单掌握了 JFrame、JLabel、JTextField、JButton 和 JPanel 等组件的方法。3.能够独立解决部分编译和执行过程中的错误信息。4.掌握事件处理的方法和常用的布局管理器。