《Java程序设计》实 验 报 告(五)
实验名称: 网络实验 | 实验地点:10-413 |
所使用的工具软件及环境: 环境:Windows 8.1;jdk 1.8; 工具:eclipse | |
实验目的: 了解JAVA网络编程的基础知识,IP和端口等。 1.掌握客户端服务器的基本概念。 2.掌握Socket通信的基本过程。 3.掌握Socket通信的常用方法。 | |
实验内容: 图形界面编程,利用socket和UDP/TCP编写,客户端和服务端程序可以进行多次对话。 | |
源程序: //ClientGUI.java package App; //ServerGUI.java package App; | |
实验结果: 该代码会创建一个具有图形界面的客户端和服务器端程序,连接成功后会显示成功消息,可以双方互相进行多次对话。每条消息都会显示发送时间,并且可以通过点击"Send"按钮或者按下回车键Enter来发送消息: 客户端代码(ClientGUI.java): · 首先,客户端界面使用了 JFrame,创建了一个图形界面窗口,包含一个用于显示聊天记录的 JTextArea,一个用于输入消息的 JTextField,以及一个用于发送消息的 JButton。 · 在构造函数中,设置界面的标题、大小和关闭操作,然后创建各个界面组件并添加到界面中。 · 为发送按钮和消息输入框分别添加了事件监听器,使得点击发送按钮或按下回车键时都会调用 sendMessage() 方法发送消息。 · sendMessage() 方法获取输入的消息内容,并调用 getTimeStamp() 方法获取当前时间戳,然后将时间戳和消息内容拼接成格式化的消息,发送给服务器端。 · getTimeStamp() 方法使用 SimpleDateFormat 格式化当前时间,并返回时间戳字符串。 · 在 main 方法中,使用 SwingUtilities.invokeLater() 方法在事件分发线程上启动客户端界面。 服务器端代码(ServerGUI.java): · 服务器端的代码结构和客户端类似,使用了 JFrame 创建图形界面窗口,包含一个用于显示聊天记录的 JTextArea,一个用于输入消息的 JTextField,以及一个用于发送消息的 JButton。 · 在构造函数中,设置界面的标题、大小和关闭操作,创建界面组件并添加到界面中。 · 添加了发送按钮和消息输入框的事件监听器,以便发送消息。 · sendMessage() 方法与客户端代码中的方法类似,获取输入的消息内容、当前时间戳,并将它们拼接成格式化的消息,发送给客户端。 · getTimeStamp() 方法也与客户端代码中的方法相同,用于获取格式化的时间戳字符串。 · ReceiveThread 类是一个实现了 Runnable 接口的内部类,在一个单独的线程中接收从客户端发来的消息,并将其显示在聊天记录中。 · 在 main 方法中,使用 SwingUtilities.invokeLater() 方法在事件分发线程上启动服务器端界面。 该代码通过图形界面实现了简单的客户端和服务器端聊天应用,使用 Socket 进行通信。客户端可以输入消息并发送给服务器端,服务器端接收到消息后可以回复消息给客户端。每条消息都带有发送时间戳,并支持通过点击按钮或按下回车键来发送消息。 | |
收获与体会: 在进行网络实验中,我通过编写Java代码来实现一个基于客户端和服务器端的聊天应用,掌握了JAVA网络编程的基础知识以及Socket通信的基本过程和常用方法。以下是我在这次实验中的收获和体会:
在网络编程中,客户端和服务器端是两个不同的实体,彼此通过网络进行通信。客户端发送请求,服务器端接收请求并提供相应的服务。通过实验,我深入理解了客户端和服务器端的角色和相互关系,以及它们在网络通信中的作用。
Socket是实现网络通信的一种机制,它提供了客户端和服务器端之间的双向通信。在实验中,我学会了创建Socket对象、建立连接、发送和接收数据的基本过程。通过Socket,我可以在不同的计算机之间建立通信,并进行数据交换。
在实验中,我使用了常用的Socket类的方法,如Socket的构造函数、getOutputStream()和getInputStream()方法用于获取输入输出流,以及PrintWriter和BufferedReader等类来进行数据的读写操作。通过这些方法,我能够在客户端和服务器端之间进行数据传输和通信。
在网络通信中,每个计算机都有一个唯一的IP地址,用于标识计算机的位置。端口是一个数字,用于标识计算机上的具体应用程序。在实验中,我学习了如何使用IP地址和端口号来建立客户端和服务器端的连接,并进行数据的传输和交流。 通过这次实验,我对Java网络编程有了更深入的了解。我掌握了基本的客户端和服务器端的概念,了解了Socket通信的基本过程和常用方法。这为我今后在网络应用开发中的实践提供了坚实的基础。我相信这些知识和经验将对我今后的学习产生积极的影响。网络编程是一个广阔且重要的领域,通过实验的学习和实践,我对网络通信的原理和技术有了更深入的认识。 |