版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上實 驗 報 告課程名稱 高級java程序設(shè)計 實驗項目 Java 網(wǎng)絡(luò)編程 實驗儀器 系 別 計算機(jī)學(xué)院 專 業(yè) 軟件工程 班級/學(xué)號 實驗日期 成 績 指導(dǎo)教師 【實驗名稱】Java 網(wǎng)絡(luò)編程【實驗?zāi)繕?biāo)】1、學(xué)習(xí)和理解客戶端-服務(wù)器模型,掌握網(wǎng)絡(luò)計算模型的Java實現(xiàn)方案。2、學(xué)習(xí)和掌握實現(xiàn)基本客戶端-服務(wù)器模型的Java 程序開發(fā)方法,能夠?qū)崿F(xiàn)客戶端程序,能夠分別實現(xiàn)服務(wù)單客戶和多客戶同時訪問的服務(wù)器端程序,能夠傳送基本數(shù)據(jù),也能夠傳送對象數(shù)據(jù)。3、學(xué)習(xí)和了解Java 實現(xiàn)方案的不同變化?!緦嶒炄掌诤蜁r間記錄】 12.3-12.4【實驗預(yù)習(xí)】 復(fù)習(xí)了高級java的
2、第三十章網(wǎng)絡(luò)章節(jié)【實驗過程及結(jié)果記錄】 1、(單客戶貸款服務(wù)器)為一個客戶端編寫一個服務(wù)器??蛻舳讼蚍?wù)器發(fā)送貸款信息(年利率、貸款年限和貸款總額)。服務(wù)器計算月償還額和總償還額,并把它們發(fā)回給客戶端。實驗結(jié)果2、(多客戶貸款服務(wù)器)在練習(xí)1 的基礎(chǔ)上,實現(xiàn)一個能夠服務(wù)多客戶的貸款服務(wù)器端程序。 實驗結(jié)果:【實驗總結(jié)】 對服務(wù)器與客戶端的運(yùn)作有了進(jìn)一步掌握,同時對IP,TCP,UDP有了了解,同時自己已經(jīng)能實現(xiàn)在局域網(wǎng)內(nèi)不同電腦間的服務(wù)器與客戶端的連接?!舅伎碱}的思考】1、如何建立服務(wù)器和客戶端之間的連接?如何在服務(wù)器端和客戶端之間發(fā)送和接收基本數(shù)據(jù)類型、對象數(shù)據(jù)類型??梢砸苑?wù)器發(fā)送、客戶端
3、接收為例說明。答:服務(wù)器創(chuàng)建一個服務(wù)器套接字,利用客戶端套接字連接客戶端.對套接字對象使用DataInputStream inputFromClient = new DataInputStream(socket.getInputStream();DataOutputStream outputToClient = new DataOutputStream(socket.getOutputStream()以及使用該對象的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ù)器程序?如何建立多客戶同時運(yùn)行的運(yùn)行環(huán)境,保證服務(wù)器端程序能夠同時面對多個客戶?答:先運(yùn)行服務(wù)器,在運(yùn)行客戶端。多客戶時,:當(dāng)建立一個與客戶端連接后,服務(wù)器就創(chuàng)建一個新線程來處理通信,然后,在無限的while循環(huán)中等待另一次連接. 4、針對練習(xí)2 的多客戶-服務(wù)器程序,描述一下你的開發(fā)步驟答:客戶端不變時,改動服務(wù)器程序,將原服務(wù)器程序中的數(shù)據(jù)傳輸模塊封裝成任務(wù)類,通過實現(xiàn)多線程的方法來實現(xiàn)多客戶。【附:程序代碼】 習(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人餐飲業(yè)務(wù)承包合同樣本版B版
- 2025版美容院會員積分管理與消費(fèi)激勵合作協(xié)議4篇
- 二零二五版數(shù)字貨幣錢包技術(shù)開發(fā)與合作協(xié)議范本3篇
- 2025年度智慧醫(yī)療平臺建設(shè)承包合同范本3篇
- 2025年度專業(yè)打字員崗位勞動合同規(guī)范文本4篇
- 2025年度連鎖藥房營業(yè)員專業(yè)培訓(xùn)及聘用合同4篇
- 2025年度10kv配電站施工期間消防安全保障合同正規(guī)范本3篇
- 2025年度醫(yī)療器械冷鏈運(yùn)輸安全協(xié)議3篇
- 個人經(jīng)營性貸款合同2024年度版2篇
- 居住區(qū)文化活動空間設(shè)計與居民參與度關(guān)系
- 教代會提案征集培訓(xùn)
- 高考語文復(fù)習(xí)【知識精研】《千里江山圖》高考真題說題課件
- 河北省承德市2023-2024學(xué)年高一上學(xué)期期末物理試卷(含答案)
- 012主要研究者(PI)職責(zé)藥物臨床試驗機(jī)構(gòu)GCP SOP
- 農(nóng)耕研學(xué)活動方案種小麥
- 2024年佛山市勞動合同條例
- 污水管網(wǎng)規(guī)劃建設(shè)方案
- 城鎮(zhèn)智慧排水系統(tǒng)技術(shù)標(biāo)準(zhǔn)
- 采購管理制度及流程采購管理制度及流程
- 五年級美術(shù)下冊第9課《寫意蔬果》-優(yōu)秀課件4人教版
- 節(jié)能降耗課件
評論
0/150
提交評論