第一范文网 - 专业文章范例文档资料分享平台

合工大JAVA实验报告

来源:用户分享 时间:2025/5/26 7:22:28 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

图2 Socket通信客户端界面 2.图1为Socket通信服务器端界面,点击该界面中的【Start】按钮,启动服务器监听服务(在图1界面中间的多行文本区域显示“Server starting…”字样)。图2为Socket通信客户端界面,点击该界面中的【Connect】按钮与服务器建立链接,并在图2所示界面中间的多行文本区域显示“Connect to server…”字样,当服务器端监听到客户端的连接后,在图1界面中间的多行文本区域追加一行“Client connected…”字样,并与客户端建立Socket连接。 3.当图1所示的服务器端和图2所示的客户机端建立Socket连接后,编程实现这两端的数据通信,每次将接收到对方的数据追加显示在多行文本框中。 三、思考题 1. 对整个实验进行总结,写出实验心得。 2. 在完成上述实验内容的基础上,尝试实现服务器端能够与多个客户机进行通信。 三、使用硬件、软件环境 PC 计算机一台,配置为CPU为1.5G,内存为512M,硬盘为40G,安装WindowsXP操作系统。 另外,使用JCreator,JDK1.6.0等软件 四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等) ①分别编写两个文件Client.java Server.java;这两个代码的结构十分相似,都是先写一个主类,再写另一个实现类,主类通过创建实现类的对象来调用其构造方法来实现功能。实现类中写了很多方法,也写了很多内部类,方法层层调用。实现类在构造方法中写了调用了实现GUI的函数,也为按钮注册了监听器。在不同的内部类中写了不同监听器所调用的actioPerformed()方法。 ②在服务器中创建ServerSocket对象来接受客户端的连接请求,并指定端口号,客户端通过Socket对象来向服务器的ip和端口发送连接请求。服务器在接到连接请求后,服务器会创建一个新的Socket对象与客户端的Socket对象连接。连接成功后通过IO流来通信,服务器的输入流是客户端的输出流,服务器的输出流时客户端的输入流。 服务器代码如下: 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.setVisible(true); serve.setResizable(false); //设置此窗体是否可由用户调整大小 } class MyFrame extends JFrame{ JTextField port; JButton start; JTextArea content; JTextField cin; JButton say; Socket socket; MyFrame(){ init(); StartListen sListen = new StartListen(); } serve.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置默认关闭操作 } SayListen stListen = new SayListen(); start.addActionListener(sListen); //为按钮start注册一个监听器 say.addActionListener(stListen); //为按钮say注册一个监听器 void init(){ setLayout(new FlowLayout()); //设置窗体为流式布局 } class StartListen implements ActionListener{ public void actionPerformed(ActionEvent e){ setSize(400,400); setLocation(400,100); add(new JLabel(\port = new JTextField(\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); start.setEnabled(false); ServerSocket s = new ServerSocket(Integer.parseInt(port.getText())); //创建 try { 一个服务器套接字对象s,形参为从port文本框中读取的整型(端口号) socket = s.accept(); PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);//创建一个打印输出流对象,其形参为从套接字socket对象中获取的输出流 ServerThread st = new ServerThread(); //创建一个ServerThread对象 out.println(\ content.append(\ //对两个字符串进行拼接 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) } cin.setText(\content.append(new Date()+\out.flush(); //清空缓存区 } catch (Exception ex) {

搜索更多关于: 合工大JAVA实验报告 的文档
合工大JAVA实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0dl6o4hnyg565jb3urou8mpoj7ocb000zo1_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top