JAVA实验-综合应用实验

2025-10-14

广州大学学生实验报告

开课学院及实验室:计算机科学与工程实验室 学院 计算机科学与教育软件学院 2014年12月05日 姓名 学号 年级/专业/班 实验课程名称 实验项目名称

Java语言 综合应用实验 成绩 指导老师 樊志平 一、实验目的

实验十三 网络编程(1)

1. 掌握使用Socket类的属性和基本方法, 2. 掌握使用ServerSocket类的方法

实验十四 网络编程(2)

1. 掌握使用DatagramSocket类的属性和基本方法, 2. 掌握使用DatagramPacket类的方法

二、实验器材 1.MacBook Pro一台 2.操作系统:OS X Yosemite 3.编程软件:eclipse 三、实验内容及原理

实验十三 网络编程(1)

1. 掌握使用使用Socket、ServerSocket类的方法。

一.使用Socket、ServerSocket

服务器端程序设计模型

(1) 在服务器端,先创建类ServerSocket的实例对象,注册在服务器端进行连接的端口号以及

允许连接的最大客户数目。

(2) 调用类ServerSocket的成员方法accept来等待客户端的连接,当有客户端与服务器端建立

连接时,accept方法将返回连接通道在服务器端的套接字。通过该套接字可以与客户端进行数据通信

(3) 调用类Socket的成员方法getInputStream和getOutputStream获得该套接字所

对应的输入流(InputStream)和输出流(OutputStream)

(4) 通过输入流(InputStream)和输出流(OutputStream)与客户端进行数据通信,处

理从客户端获得的数据以及需要向客户端发送数据

(5) 通信完毕后,关闭输入流和输出流和套接字 客户端

(1) 创建类Socket的实例对象,与服务器建立连接,在建立实例对象时须指定服务器端的主

机名和端口号,主机名和端口号必须完全匹配才能建立连接

(2) 调用类Socket的成员方法getInputStream和getOutputStream获得该套接字所

对应的输入流(InputStream)和输出流(OutputStream)

(3) 通过输入流(InputStream)和输出流(OutputStream)与客户端进行数据通信,处

理从客户端获得的数据以及需要向客户端发送数据

(4) 通信完毕后,关闭输入流和输出流和套接字

实验十四 网络编程(2)

1.掌握使用使用DatagramSocket、DatagramPacket类的方法。

一 使用DatagramSocket、DatagramPacket

(1) 在服务器端,先创建类DatagramSocket的实例对象,注册在服务器端进行连接的端口

号。等待客户程序的请求

(2) 创建据报的缓冲区,调用DatagramPacket创建接受数据包

(3) 调用类DatagramSocket的成员方法receive来接受客户端的数据,并获取客户端IP地

址和端口

(4) 创建包含发送数据和向给定IP地址和端口发送的应答数据包; (5) 调用类DatagramSocket的成员方法send来发送数据报 (6) 通信完毕后,关闭UDPDaytimeServer并退出; 客户端

(1) 创建类DatagramSocket的实例对象

(2) 创建请求和应答缓冲区,调用DatagramPacket创建发送数据包,在创建数据包时须指

定服务器端的主机名和端口号,和需要发送的数据与数据长度

(3) 调用类DatagramSocket的成员方法send来发送请求 (4) 调用类DatagramSocket的成员方法receive来接受数据报 (5) 通信完毕后,关闭输入流和输出流和套接字

四、实验过程原始数据记录

实验十三 网络编程(1)

1.使用ServerSocket编写一个时间服务器程序,它能够向客户程序发送以下格式的时间信息。

时间格式为:Sat Jan 15 10:45:20 CST 2005

(1) 服务器端

JTimeServer.java

import java.net.*; import java.io.*; import java.util.*;

public class DaytimeServer{

public static void main(String[] args){ ServerSocket timeSocket; Socket clientSocket; OutputStream out;

Date currDate; if(args.length<1){

System.out.println(\ System.out.println(\ System.exit(-1); } try{

timeSocket = new ServerSocket(Integer.parseInt(args[0]));

System.out.println(\时间服务器已经启动,正在侦听断口\ try{

while(true){

clientSocket = timeSocket.accept(); try{

out = clientSocket.getOutputStream(); currDate = new Date();

out.write(currDate.toString().getBytes());

System.out.println(\服务器时间[\已经发送到\ clientSocket.getInetAddress()); }finally {

clientSocket.close(); } } }finally {

timeSocket.close(); }

}catch(IOException ex){ System.out.println(ex);

}catch(NumberFormatException e){ System.out.println(\ } System.exit(0); } }

(2)客户端

DaytimeClient.java import java.net.*; import java.io.*;

public class DaytimeClient{

public static void main(String[] args){ String serverName; String serverPort=\ InetAddress serverAddress; String inBuffer; Socket daytimeSocket; BufferedReader socketIn; if(args.length<2){

System.out.println(

\

System.out.println(\ } else{ try{

serverName=args[0];

serverAddress=InetAddress.getByName(serverName); serverPort=args[1];

System.out.println(\正在连接时间服务器\ serverAddress.toString()+\ daytimeSocket = new Socket( serverAddress,Integer.parseInt(serverPort)); try{

daytimeSocket.setSoTimeout(5 * 1000); socketIn=new BufferedReader(

new InputStreamReader(daytimeSocket.getInputStream())); inBuffer = socketIn.readLine();

System.out.println(\时间服务器应答: \ }finally{

daytimeSocket.close(); }

}catch(IOException ex){ System.out.println(ex);

}catch(NumberFormatException e){

System.out.println(\ } }

System.exit(0); } }

运行结果: 服务器:

客户端:

2. 使用套接字传输数据,计算机三角形面积,客户端输入三角形的三条边长,并将

数据发送给服务器端,服务器端计算机三角形面积并发送给客户端 (1)客户端程序

Client.java

import java.net.*; import java.io.*; import java.awt.*;

import java.awt.event.*; import javax.swing.*;

class Client extends JFrame implements Runnable,ActionListener {

JButton connection,computer; JTextField inputA,inputB,inputC; JTextArea showResult; Socket socket=null;

DataInputStream in=null; DataOutputStream out=null; Thread thread; public Client() {

socket=new Socket(); connection=new JButton(\连接服务器\ computer=new JButton(\求三角形面积\ computer.setEnabled(false); inputA=new JTextField(\ inputB=new JTextField(\ inputC=new JTextField(\

Box boxV1=Box.createVerticalBox(); boxV1.add(new JLabel(\输入边A\ boxV1.add(new JLabel(\输入边B\ boxV1.add(new JLabel(\输入边C\ Box boxV2=Box.createVerticalBox(); boxV2.add(inputA); boxV2.add(inputB); boxV2.add(inputC);

Box baseBox=Box.createHorizontalBox(); baseBox.add(boxV1); baseBox.add(boxV2);

Container con=getContentPane(); con.setLayout(new FlowLayout()); showResult=new JTextArea(8,18); con.add(connection); con.add(baseBox); con.add(computer);

con.add(new JScrollPane(showResult)); computer.addActionListener(this);


JAVA实验-综合应用实验.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:前期物业服务合同 贵阳住房和城乡建设局

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219