第一篇:云南大學軟件學院計算機網(wǎng)絡原理實驗四
實驗
四、web服務器套接字編程實驗指導
1.實驗目的:
編寫一個WEB服務器程序,可以接受來自瀏覽器的訪問,并傳輸頁面(包含多個對象)到瀏覽器。掌握Socket編程。2.實驗環(huán)境:
連入局域網(wǎng)絡的主機一臺。3.實驗指導:
超文本傳輸協(xié)議(HTTP)是位于TCP/IP 協(xié)議的應用層,是最廣為人知的協(xié)議,也是互連網(wǎng)中最核心的協(xié)議之一。HTTP協(xié)議是Web瀏覽器和Web服務器之間的應用層協(xié)議,是通用的、無狀態(tài)的、面向對象的協(xié)議。
一個完整的HTTP協(xié)議會話過程包括四個步驟:
? 連接
Web瀏覽器與Web服務器建立連接,打開一個稱為Socket(套接字)的虛擬文件,此文件的建立標志著連接建立成功; ? 請求
Web瀏覽器通過Socket向Web服務器提交請求。HTTP的請求一般是GET或POST命令(POST用于FORM參數(shù)的傳遞); ? 應答
Web瀏覽器提交請求后,通過HTTP協(xié)議傳送給Web服務器。Web服務器接到后,進行事務處理,處理結果又通過HTTP傳回給Web瀏覽器,從而在Web瀏覽器上顯示出所請求的頁面; ? 關閉連接
應答結束后Web瀏覽器與Web服務器必須斷開,以保證其它Web瀏覽器能夠與Web服務器建立連接。
4.實驗分析,回答下列問題。
運行課本中Webserver.java程序。查找資料,寫出程序源代碼,并加上必要的注釋。如能改寫該程序,附上修改后的源代碼。附上運行的截圖。
代碼及注釋如下:
import java.io.*;//引入Java輸入輸出包 import java.net.*;//引入Java網(wǎng)絡包 import java.util.*;//導入Java實用工具庫 class Webserver{ public static void main(String arg[])throws Exception{ String requestMessageLine;String filename;//創(chuàng)建一個監(jiān)聽socket ServerSocket listenSocket=new ServerSocket(6789);//等待客戶機發(fā)起連接 while(1==1){
Socket connectionSocket=listenSocket.accept();//創(chuàng)建一個從socket中讀文本行的流 BufferedReader inFromClient=new
BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));//創(chuàng)建一個向socket中寫文本行的流 DataOutputStream outToClient=new
DataOutputStream(connectionSocket.getOutputStream());//讀取客戶機發(fā)送的一行文本requestMessageLine=inFromClient.readLine();//字段串解析
StringTokenizer tokenizerLine=new StringTokenizer(requestMessageLine);//如果客戶端的請求方式為get方式
if(tokenizerLine.nextToken().equals(“GET”)){ filename=tokenizerLine.nextToken();//獲得文件名
if(filename.startsWith(“/”)==true)
filename=filename.substring(1);//新建文件
System.out.println(“The request filename is:” + filename);//輸出字符串,內容為客戶端請求的文件名
File file=new File(filename);int numOfBytes=(int)file.length();//新建文件輸入流
FileInputStream inFile=new FileInputStream(filename);byte[] fileInBytes=new byte[numOfBytes];//將文件流信息讀入byte數(shù)組 inFile.read(fileInBytes);// 服務端輸出信息
outToClient.writeBytes(“HTTP/1.0 200 Document Followsrn”);//不同的文件類型所對應的頭文件格式不同
if(filename.endsWith(“.jpg”))
outToClient.writeBytes(“Content-Type:image/jpegrn”);
if(filename.endsWith(“.gif”))
outToClient.writeBytes(“Content-Type:image/gifrn”);outToClient.writeBytes(“Content-Length:”+numOfBytes+“rn”);
outToClient.writeBytes(“rn”);
outToClient.write(fileInBytes,0,numOfBytes);
connectionSocket.close();
} //錯誤的請求方式
else System.out.println(“Bad Resquest Message”);} } 實驗結果截圖如下:
實驗四為JAVA的編程實驗,實驗代碼已經(jīng)提供,大家只需要讀懂此程序,運行此程序查看結果,或做稍加修改就可以了。客戶端的程序不用編寫,只需要用瀏覽器做為客戶端程序,向給定的服務器程序索取網(wǎng)頁就可以了,大家可以事先先下載一個網(wǎng)頁把它存放在和服務器程序同一個文件夾下即可,瀏覽器地址欄輸入按照實驗提示來做:使用WEB瀏覽器來測試WEB服務器的程序,如果在本機上測試,本機服務器監(jiān)聽端口為6789,要獲得本機上文件名為index.html,應在瀏覽器指定下列URL http://localhost:6789/index.html;如果服務器程序不在本機上,服務器監(jiān)聽端口為6789,要獲得服務器上文件名為index.html,應在瀏覽器指定下列URL http://服務器IP地址:6789/index.html。檢查瀏覽器中輸入的端口號是否和服務器監(jiān)聽的端口號一致。不一致要進行修改。
四、實驗總結
總結你在實驗過程中遇到的問題和解決的方法。
這次實驗做的比較慢,在webserver程序的運行上遇到了比較大的困難,由于第一次接觸java,對于java的運行并不清楚,一開始就不知道用什么編譯器編譯,在網(wǎng)上查找后,找到了合適的編譯器,之后又出現(xiàn)了編譯錯誤的情況,如下圖:
由于無法加載,服務器程序一直運行不成功,后來通過網(wǎng)絡查找才發(fā)現(xiàn),java程序運行前必須進行編譯,生成一個class后綴的文件才行,最終運行成功,通過瀏覽器找到預先的存儲的網(wǎng)頁。
這次實驗比較好的是在jdk的安裝和設置環(huán)境變量的時候比較熟練,得益于第一次綜合技能時間做的比較好,所以這次在配置java環(huán)境是比較順利。
第二篇:云南大學軟件學院 實驗8
計算機組成原理與匯編元程序設計實驗報告
實驗八 實驗考核:匯編程序綜合設計實驗
姓名:學號:序號:班級:分數(shù):
1.編寫程序,實現(xiàn)表的處理:內存單元中有一個ASCII碼表,編寫程序完成下面的功能:
① 首先輸出表的內容;
② 插入一個數(shù)據(jù),插入的數(shù)據(jù)和插入的位置從鍵盤輸入;
③ 對表中的數(shù)據(jù)進行排序,按升順或降順排序可以進行選擇;
④ 在表中查找某一個關鍵字,要查找的關鍵字從鍵盤輸入;如果找到,輸出查找的關鍵字并給出提示“find”,否則給出提示“no find”;
⑤ 程序執(zhí)行以后,輸出表中的插入以后的內容和排序以后的內容;
⑥ 程序有友好的運行界面;
⑦要求程序能夠處理基本的錯誤信息;
2.1)首先首先程序應該顯示版權信息(自己考慮)。
2)其次顯示今天的日期,顯示格式是year:****month:** day:**
3)然后再編寫功能完善運算器程序,實現(xiàn)四則運算及進制轉換。
要求:提供設計報告。
所有程序要求提供算法,程序框圖,程序測試截圖。重要內容要求有解釋!
第三篇:云南大學軟件學院大學物理實驗4
云南大學軟件學院 實驗報告
課程:大學物理實驗學期:2011-2012學年 第一學期任課教師:王逍班級:星期三學號:20111120012序號:3姓名:武瓊成績:
實驗4靜電場
問題1:
(1)等量異號點電荷在x負軸線上的產生的電場強度大小和方向?
(2)pe電偶極矩在x負軸線上的產生的電場強度大小和方向?
(3)編寫matlab程序,在x取值[-6,+6]范圍內畫出點電荷和電偶極子電場強度曲線,同時畫出電偶極子。(說明:k,Q,L等常量取1,所有曲線畫在同一個figure中。注意使用axis調整坐標顯示的取值范圍)
(4)對繪制的電場強度曲線進行分析說明。如果交換電荷±Q的位置,結果如何?
問題2:
(1)等量異號點電荷在y負軸線上的產生的電場強度大小和方向?
(2)pe為電偶極矩在y負軸線上的產生的電場強度大小和方向?
(3)編寫matlab程序,在y取值[-6,+6]范圍內畫出點電荷和電偶極子電場強度曲線。(說明:k,Q,L等常量取1,所有曲線畫在同一個figure中。注意使用axis調整坐標顯示的取值范圍)
(4)對繪制的電場強度曲線進行分析說明。如果交換電荷±Q的位置,結果如何?
第四篇:云南大學軟件學院大學物理實驗5
云南大學軟件學院 實驗報告
課程:大學物理實驗學期:2012-2013學年 第一學期任課教師:王逍
班級: 星期三學號:20111120012序號: 3姓名: 武瓊成績:
實驗5磁場
一、實驗內容
1在本實驗中預設帶電粒子所帶電荷q與質量m之比絕對值為1。實驗程序界面如下圖:任意選定10個速度,調整磁感應強度值與電場強度值,使帶電粒子的運動軌跡為水平直線。
將運動軌跡為直線所對應的速度、磁感應強度、及電場強度數(shù)值填入下表中。
問題:該帶電粒子帶正電荷還是負電荷?為什么?
帶正電,從實驗已知條件可知,磁場方向垂直于面向里,當磁場強度增大時,帶點粒子運動軌跡向上傾斜,可知帶點粒子的洛倫茲力向上,用左手定則可知,粒子帶正電。
二、實驗內容
21.當AC桿以初速度v0向右運動時,使用matlab編寫程序,求AC桿運動的加速度方程、速度方程和位移方程。
加速度方程:
速度方程:
位移方程:
2.使用matlab編寫程序,繪制AC桿運動的速度曲線和位移曲線。
3.分析AC桿能夠移動的最大距離是多少?運動時間是多少?
第五篇:云南大學軟件學院數(shù)據(jù)庫實驗3
云南大學軟件學院 實驗報告
課程: 數(shù)據(jù)庫原理與實用技術實驗學期: 2011-2012學年 第 二 學期任課教師:專業(yè):學號:姓名:成績:
實驗3使用SQL語句創(chuàng)建并管理數(shù)據(jù)庫、數(shù)據(jù)表
一、實驗目的掌握查詢分析器的使用方法。掌握T-SQL語句的基本使用。熟練掌握DDL語句。熟練掌握DML(Insert, Delete, Update)語句。
二、實驗內容
1、用T-SQL語句創(chuàng)建并管理數(shù)據(jù)庫“Employee數(shù)據(jù)庫”,數(shù)據(jù)庫要求見實驗二。記錄創(chuàng)建數(shù)據(jù)庫的SQL語句。
2、修改數(shù)據(jù)庫:將“Employee數(shù)據(jù)庫”的數(shù)據(jù)庫最大容量更改為無限制(UNLIMITED),然后將“Employee數(shù)據(jù)庫”的日志文件增長方式改為2MB。記錄SQL語句。
3、用T-SQL語句在“Employee數(shù)據(jù)庫”創(chuàng)建數(shù)據(jù)表,數(shù)據(jù)表的結構見實驗二。記錄創(chuàng)建表的SQL
語句。
4、修改表結構:將雇員信息表person中,Prof的字段長度改為15。記錄SQL語句。
5、向表中添加記錄,使用Insert Into 語句分別向四張表中添加符合表結構屬性的數(shù)據(jù)記錄,要
求每張表至少4條記錄,并顯示所添加的記錄數(shù)據(jù)。
6、向雇員信息表person中添加記錄
完成如下操作:(1)、修改表中記錄:將“王輝”的部門修改為“003”;
(2)、刪除記錄:刪除表中性別為“女”的員工記錄;
(3)、刪除表:將“person”從“Employee數(shù)據(jù)庫”中刪除。
三、思考題
如數(shù)據(jù)庫表中存在如下記錄:
表person中的數(shù)據(jù)
現(xiàn)執(zhí)行: DELETE FROM department WHERE Depton=“001”,執(zhí)行結果如何?為什么?