北信科高级java网络编程(共14页)_第1页
北信科高级java网络编程(共14页)_第2页
北信科高级java网络编程(共14页)_第3页
北信科高级java网络编程(共14页)_第4页
北信科高级java网络编程(共14页)_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上实 验 报 告课程名称 高级java程序设计 实验项目 Java 网络编程 实验仪器 系 别 计算机学院 专 业 软件工程 班级/学号 实验日期 成 绩 指导教师 【实验名称】Java 网络编程【实验目标】1、学习和理解客户端-服务器模型,掌握网络计算模型的Java实现方案。2、学习和掌握实现基本客户端-服务器模型的Java 程序开发方法,能够实现客户端程序,能够分别实现服务单客户和多客户同时访问的服务器端程序,能够传送基本数据,也能够传送对象数据。3、学习和了解Java 实现方案的不同变化。【实验日期和时间记录】 12.3-12.4【实验预习】 复习了高级java的

2、第三十章网络章节【实验过程及结果记录】 1、(单客户贷款服务器)为一个客户端编写一个服务器。客户端向服务器发送贷款信息(年利率、贷款年限和贷款总额)。服务器计算月偿还额和总偿还额,并把它们发回给客户端。实验结果2、(多客户贷款服务器)在练习1 的基础上,实现一个能够服务多客户的贷款服务器端程序。 实验结果:【实验总结】 对服务器与客户端的运作有了进一步掌握,同时对IP,TCP,UDP有了了解,同时自己已经能实现在局域网内不同电脑间的服务器与客户端的连接。【思考题的思考】1、如何建立服务器和客户端之间的连接?如何在服务器端和客户端之间发送和接收基本数据类型、对象数据类型。可以以服务器发送、客户端

3、接收为例说明。答:服务器创建一个服务器套接字,利用客户端套接字连接客户端.对套接字对象使用DataInputStream inputFromClient = new DataInputStream(socket.getInputStream();DataOutputStream outputToClient = new DataOutputStream(socket.getOutputStream()以及使用该对象的read()和write()方法读取和写入数据。2、由单客户的服务器端到多客户的服务器端,如果使用多线程,那么,单客户服务器的哪部分功能(代码段、模块),要封装为任务类代码,放在多

4、客户服务器的线程任务类中运行?答:通过将服务员器中通过套接字进行数据传输的模块封装为任务类代码,放在多客户服务器的线程任务类3、如何运行客户-服务器程序?如何建立多客户同时运行的运行环境,保证服务器端程序能够同时面对多个客户?答:先运行服务器,在运行客户端。多客户时,:当建立一个与客户端连接后,服务器就创建一个新线程来处理通信,然后,在无限的while循环中等待另一次连接. 4、针对练习2 的多客户-服务器程序,描述一下你的开发步骤答:客户端不变时,改动服务器程序,将原服务器程序中的数据传输模块封装成任务类,通过实现多线程的方法来实现多客户。【附:程序代码】 习题1的客户端代码:package

5、 gaozha;import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import .Socket;import javax.swing.AbstractButton;import javax.swing.JButton

6、;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;public class Client extends JFrame JTextField Rate = new JTextField(20);JTextField Years = new JTextField(20);JTextField Amount = new JTextField(20);JTextArea jta

7、 = new JTextArea(10, 40);private DataOutputStream toServer;private DataInputStream fromServer;Client() JPanel p1 = new JPanel();p1.setLayout(new GridLayout(3, 1);p1.add(new JLabel("Annual Interest Rate");p1.add(new JLabel("Number Of Years ");p1.add(new JLabel("Loan Amount &q

8、uot;);JPanel p2 = new JPanel();p2.setLayout(new GridLayout(3, 1);p2.add(Rate);p2.add(Years);p2.add(Amount);JButton Sumbit = new JButton("Sumbit");BorderLayout layout = new BorderLayout();add(p1, layout.WEST);add(p2, layout.CENTER);add(Sumbit, layout.EAST);add(jta, layout.SOUTH);setTitle(&q

9、uot;RateClient");setSize(500, 600);setLocationRelativeTo(null);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);pack();try Socket socket = new Socket("localhost", 8001);fromServer = new DataInputStream(socket.getInputStream();toServer = new DataOutputStream(socket.getOu

10、tputStream(); catch (IOException ex) jta.append(ex.toString() + 'n');Sumbit.addActionListener(new JButtonListener();public class JButtonListener implements ActionListener public void actionPerformed(ActionEvent e) try double rate = Double.parseDouble(Rate.getText().trim();double years = Doub

11、le.parseDouble(Years.getText().trim();double amount = Double.parseDouble(Amount.getText().trim();toServer.writeDouble(rate);toServer.writeDouble(years);toServer.writeDouble(amount);double monthPayment = fromServer.readDouble();double AllPayment = fromServer.readDouble();jta.setText("");jta

12、.append("Annual Interest Rate:" + rate + 'n');jta.append("Number Of Years :" + years + 'n');jta.append("Loan Amount " + amount + 'n');jta.append("montPayment:" + monthPayment + 'n');jta.append("AllPayment:" + AllPaymen

13、t + 'n'); catch (IOException ex) System.out.println(ex);public static void main(String args) / TODO Auto-generated method stubnew Client();习题1的服务器端代码package gaozha;import java.awt.BorderLayout;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import .S

14、erverSocket;import .Socket;import java.util.Date;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTextArea;public class Server extends JFrame JTextArea jta = new JTextArea();Server() setLayout(new BorderLayout();add(new JScrollPane(jta), BorderLayout.CENTER);setTitle(&quo

15、t;RateSever");setSize(500, 400);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);try ServerSocket serverSocket = new ServerSocket(8001);jta.append("RateServer started at " + new Date() + 'n');Socket socket = serverSocket.accept();HandleRateClient task = new Hand

16、leRateClient(socket);new Thread(task).start(); catch (IOException ex) System.err.println(ex);class HandleRateClient implements Runnable private Socket socket;public HandleRateClient(Socket socket) this.socket = socket;public void run() try DataInputStream inputFromClient = new DataInputStream(socket

17、.getInputStream();DataOutputStream outputToClient = new DataOutputStream(socket.getOutputStream();double rate = inputFromClient.readDouble();double years = inputFromClient.readDouble();double amount = inputFromClient.readDouble();double monthrate = rate / (12 * years);double montPayment;double AllPa

18、yment;montPayment = (amount * monthrate * Math.pow(1 + monthrate,12 * years)/ (Math.pow(1 + monthrate, 12 * years) - 1);AllPayment = montPayment * 12;outputToClient.writeDouble(montPayment);outputToClient.writeDouble(AllPayment); catch (IOException xe) System.err.println(xe);public static void main(

19、String args) / TODO Auto-generated method stubnew Server();习题2客户端代码package gaozha;import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;i

20、mport .Socket;import javax.swing.AbstractButton;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;public class Client extends JFrame JTextField Rate = new JTextField(20);JTextField Years

21、 = new JTextField(20);JTextField Amount = new JTextField(20);JTextArea jta = new JTextArea(10, 40);private DataOutputStream toServer;private DataInputStream fromServer;Client() JPanel p1 = new JPanel();p1.setLayout(new GridLayout(3, 1);p1.add(new JLabel("Annual Interest Rate");p1.add(new J

22、Label("Number Of Years ");p1.add(new JLabel("Loan Amount ");JPanel p2 = new JPanel();p2.setLayout(new GridLayout(3, 1);p2.add(Rate);p2.add(Years);p2.add(Amount);JButton Sumbit = new JButton("Sumbit");BorderLayout layout = new BorderLayout();add(p1, layout.WEST);add(p2,

23、layout.CENTER);add(Sumbit, layout.EAST);add(jta, layout.SOUTH);setTitle("RateClient");setSize(500, 600);setLocationRelativeTo(null);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);pack();try Socket socket = new Socket("localhost", 8001);fromServer = new DataInputS

24、tream(socket.getInputStream();toServer = new DataOutputStream(socket.getOutputStream(); catch (IOException ex) jta.append(ex.toString() + 'n');Sumbit.addActionListener(new JButtonListener();public class JButtonListener implements ActionListener public void actionPerformed(ActionEvent e) try

25、double rate = Double.parseDouble(Rate.getText().trim();double years = Double.parseDouble(Years.getText().trim();double amount = Double.parseDouble(Amount.getText().trim();toServer.writeDouble(rate);toServer.writeDouble(years);toServer.writeDouble(amount);double monthPayment = fromServer.readDouble()

26、;double AllPayment = fromServer.readDouble();jta.setText("");jta.append("Annual Interest Rate:" + rate + 'n');jta.append("Number Of Years :" + years + 'n');jta.append("Loan Amount " + amount + 'n');jta.append("montPayment:" +

27、monthPayment + 'n');jta.append("AllPayment:" + AllPayment + 'n'); catch (IOException ex) System.out.println(ex);public static void main(String args) / TODO Auto-generated method stubnew Client();习题2服务器端代码package gaozha;import java.awt.BorderLayout;import java.io.DataInputSt

28、ream;import java.io.DataOutputStream;import java.io.IOException;import .ServerSocket;import .Socket;import java.util.Date;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTextArea;public class Server extends JFrame JTextArea jta = new JTextArea();Server() setLayout(new Bo

29、rderLayout();add(new JScrollPane(jta), BorderLayout.CENTER);setTitle("RateSever");setSize(500, 400);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);try ServerSocket serverSocket = new ServerSocket(8001);jta.append("RateServer started at " + new Date() + 'n');while (true) Socket socket = serverSocket.accept();HandleRateClient task = new HandleRa

温馨提示

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

评论

0/150

提交评论