版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí) 驗(yàn) 報(bào) 告課程名稱 高級(jí)java程序設(shè)計(jì) 實(shí)驗(yàn)項(xiàng)目 Java 網(wǎng)絡(luò)編程 實(shí)驗(yàn)儀器 系 別 計(jì)算機(jī)學(xué)院 專 業(yè) 軟件工程 班級(jí)/學(xué)號(hào) 實(shí)驗(yàn)日期 成 績(jī) 指導(dǎo)教師 【實(shí)驗(yàn)名稱】Java 網(wǎng)絡(luò)編程【實(shí)驗(yàn)?zāi)繕?biāo)】1、學(xué)習(xí)和理解客戶端-服務(wù)器模型,掌握網(wǎng)絡(luò)計(jì)算模型的Java實(shí)現(xiàn)方案。2、學(xué)習(xí)和掌握實(shí)現(xiàn)基本客戶端-服務(wù)器模型的Java 程序開發(fā)方法,能夠?qū)崿F(xiàn)客戶端程序,能夠分別實(shí)現(xiàn)服務(wù)單客戶和多客戶同時(shí)訪問的服務(wù)器端程序,能夠傳送基本數(shù)據(jù),也能夠傳送對(duì)象數(shù)據(jù)。3、學(xué)習(xí)和了解Java 實(shí)現(xiàn)方案的不同變化?!緦?shí)驗(yàn)日期和時(shí)間記錄】 12.3-12.4【實(shí)驗(yàn)預(yù)習(xí)】 復(fù)習(xí)了高級(jí)java的
2、第三十章網(wǎng)絡(luò)章節(jié)【實(shí)驗(yàn)過程及結(jié)果記錄】 1、(單客戶貸款服務(wù)器)為一個(gè)客戶端編寫一個(gè)服務(wù)器??蛻舳讼蚍?wù)器發(fā)送貸款信息(年利率、貸款年限和貸款總額)。服務(wù)器計(jì)算月償還額和總償還額,并把它們發(fā)回給客戶端。實(shí)驗(yàn)結(jié)果2、(多客戶貸款服務(wù)器)在練習(xí)1 的基礎(chǔ)上,實(shí)現(xiàn)一個(gè)能夠服務(wù)多客戶的貸款服務(wù)器端程序。 實(shí)驗(yàn)結(jié)果:【實(shí)驗(yàn)總結(jié)】 對(duì)服務(wù)器與客戶端的運(yùn)作有了進(jìn)一步掌握,同時(shí)對(duì)IP,TCP,UDP有了了解,同時(shí)自己已經(jīng)能實(shí)現(xiàn)在局域網(wǎng)內(nèi)不同電腦間的服務(wù)器與客戶端的連接?!舅伎碱}的思考】1、如何建立服務(wù)器和客戶端之間的連接?如何在服務(wù)器端和客戶端之間發(fā)送和接收基本數(shù)據(jù)類型、對(duì)象數(shù)據(jù)類型。可以以服務(wù)器發(fā)送、客戶端
3、接收為例說明。答:服務(wù)器創(chuàng)建一個(gè)服務(wù)器套接字,利用客戶端套接字連接客戶端.對(duì)套接字對(duì)象使用DataInputStream inputFromClient = new DataInputStream(socket.getInputStream();DataOutputStream outputToClient = new DataOutputStream(socket.getOutputStream()以及使用該對(duì)象的read()和write()方法讀取和寫入數(shù)據(jù)。2、由單客戶的服務(wù)器端到多客戶的服務(wù)器端,如果使用多線程,那么,單客戶服務(wù)器的哪部分功能(代碼段、模塊),要封裝為任務(wù)類代碼,放在多
4、客戶服務(wù)器的線程任務(wù)類中運(yùn)行?答:通過將服務(wù)員器中通過套接字進(jìn)行數(shù)據(jù)傳輸?shù)哪K封裝為任務(wù)類代碼,放在多客戶服務(wù)器的線程任務(wù)類3、如何運(yùn)行客戶-服務(wù)器程序?如何建立多客戶同時(shí)運(yùn)行的運(yùn)行環(huán)境,保證服務(wù)器端程序能夠同時(shí)面對(duì)多個(gè)客戶?答:先運(yùn)行服務(wù)器,在運(yùn)行客戶端。多客戶時(shí),:當(dāng)建立一個(gè)與客戶端連接后,服務(wù)器就創(chuàng)建一個(gè)新線程來處理通信,然后,在無限的while循環(huán)中等待另一次連接. 4、針對(duì)練習(xí)2 的多客戶-服務(wù)器程序,描述一下你的開發(fā)步驟答:客戶端不變時(shí),改動(dòng)服務(wù)器程序,將原服務(wù)器程序中的數(shù)據(jù)傳輸模塊封裝成任務(wù)類,通過實(shí)現(xiàn)多線程的方法來實(shí)現(xiàn)多客戶?!靖剑撼绦虼a】 習(xí)題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();習(xí)題1的服務(wù)器端代碼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();習(xí)題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();習(xí)題2服務(wù)器端代碼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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高端紅酒代理銷售合同協(xié)議
- 2025年度市場(chǎng)調(diào)研服務(wù)外包合同4篇
- 二零二四年個(gè)性化嬰兒護(hù)理服務(wù)與月嫂雇傭協(xié)議3篇
- 2025年茶店加盟管理合同范本簡(jiǎn)易4篇
- 專業(yè)蝦苗供應(yīng)協(xié)議模板2024年適用版A版
- 2025年度城市地下綜合管廊建設(shè)施工合同9篇
- 2025年茶樓茶葉采購(gòu)與營(yíng)銷推廣合同范本4篇
- 2024門店承包與區(qū)域市場(chǎng)拓展合同范本3篇
- 2025年度戶外活動(dòng)中心防雨棚定制與施工合同3篇
- 專用中藥材批量采購(gòu)協(xié)議范本2024版版B版
- 《庖丁解?!帆@獎(jiǎng)?wù)n件(省級(jí)公開課一等獎(jiǎng))-完美版PPT
- 化工園區(qū)危險(xiǎn)品運(yùn)輸車輛停車場(chǎng)建設(shè)標(biāo)準(zhǔn)
- 6月大學(xué)英語(yǔ)四級(jí)真題(CET4)及答案解析
- 氣排球競(jìng)賽規(guī)則
- 電梯維修保養(yǎng)報(bào)價(jià)書模板
- 危險(xiǎn)化學(xué)品目錄2023
- FZ/T 81024-2022機(jī)織披風(fēng)
- GB/T 33141-2016鎂鋰合金鑄錠
- JJF 1069-2012 法定計(jì)量檢定機(jī)構(gòu)考核規(guī)范(培訓(xùn)講稿)
- 綜合管廊工程施工技術(shù)概述課件
- 公積金提取單身聲明
評(píng)論
0/150
提交評(píng)論