第一篇:計算機(jī)網(wǎng)絡(luò)原理實驗三
實驗
三、套接字編程
序號: 姓名: 字麗梅 學(xué)號: 20091120216 成績
1.實驗?zāi)康模?/p>
兩人一組,編寫一個客戶端、服務(wù)器程序,掌握Socket編程原理。2.實驗環(huán)境:
連入局域網(wǎng)絡(luò)的主機(jī)一臺。3.實驗指導(dǎo):
Socket API是實現(xiàn)進(jìn)程間通信的一種編程設(shè)施,也是一種為進(jìn)程間提供底層抽象的機(jī)制。理解socket編程模型及其原理。4.實驗分析,回答下列問題。
a.運行指導(dǎo)書中的程序,并修改服務(wù)器的功能(自己思考),改寫成多線程web服務(wù)器(選作),附上源代碼,并加關(guān)鍵代碼注釋。
b.給出程序調(diào)試和運行的截圖。
c.回答下列問題:
(1)為什么在服務(wù)器和客戶端要包含winsock2.h文件?
答:Windows網(wǎng)絡(luò)編程至少需要兩個頭文件:winsock2.h和windows.h。
(2)為什么在服務(wù)器和客戶端程序中要加入#pragma comment(lib,“ws2_32.lib”)語句,如果不加會出現(xiàn)什么問題?
答:#pragma comment(lib,“ws2_32.lib”)表示鏈接ws2_32.lib這個庫。該庫對應(yīng)ws2_32.dll,提供了對某些網(wǎng)絡(luò)相關(guān)API的支持,若使用其中的API,則應(yīng)該將ws2_32.lib加入工程,如果不加入#pragma comment(lib,“ws2_32.lib”),則不能使用其中的API,即得不到相關(guān)API的支持。
(3)為什么在服務(wù)器和客戶端程序中要使用WSAStartup函數(shù),如果不用程序會有什么問題?
答:本函數(shù)必須是應(yīng)用程序或DLL調(diào)用的第一個Windows Sockets函數(shù).它允許應(yīng)用程序或DLL指明Windows Sockets API的版本號及獲得特定Windows Sockets實現(xiàn)的細(xì)節(jié)。應(yīng)用程序或DLL只能在一次成功的WSAStartup()調(diào)用之后才能調(diào)用進(jìn)一步的Windows Sockets API函數(shù)。如果不用應(yīng)用程序或DLL就不能進(jìn)一步的調(diào)用Windows Sockets API函數(shù),程序就不能繼續(xù)執(zhí)行。
(4)如果服務(wù)器程序中沒有memset(server.sin_zero, 0, sizeof(server.sin_zero));語句,程序會出現(xiàn)什么錯誤,為什么?
答:沒有錯誤,注釋這一條語句后,程序調(diào)試成功,實現(xiàn)訪問。
(5)如果先運行客戶端程序,程序會有什么現(xiàn)象,為什么會有這一現(xiàn)象?
答:程序跳出運行,并顯示”can not creat connect!”因為沒有相應(yīng)的服務(wù)器與之創(chuàng)立鏈接。
(6)如果服務(wù)器程序所在計算機(jī)沒有連接網(wǎng)絡(luò),程序會發(fā)生什么錯誤?我們捕獲到什么錯誤信息?
答:如果服務(wù)器程序所在計算機(jī)沒有鏈接網(wǎng)絡(luò),則執(zhí)行程序后出現(xiàn):
binding stream socket: No error Press any key to continue...(7)上述服務(wù)器是串行處理多個客戶端的請求,如何該成并發(fā)處理的服務(wù)器? 答:用父進(jìn)程調(diào)用accept,然后調(diào)用fork,這樣,已連接套接口就在父進(jìn)程與子進(jìn)程間共享,一般來說,接下來便是子進(jìn)程讀、寫已連接套接口并關(guān)閉偵聽套接口,而父進(jìn)程則關(guān)閉已連接套接口。
第二篇:計算機(jī)網(wǎng)絡(luò)原理實驗三
實驗
三、套接字編程
1.實驗?zāi)康模?/p>
兩人一組,編寫一個客戶端、服務(wù)器程序,掌握Socket編程原理。2.實驗環(huán)境:
連入局域網(wǎng)絡(luò)的主機(jī)一臺。3.實驗指導(dǎo):
Socket API是實現(xiàn)進(jìn)程間通信的一種編程設(shè)施,也是一種為進(jìn)程間提供底層抽象的機(jī)制。理解socket編程模型及其原理。4.實驗分析,回答下列問題。
a.運行指導(dǎo)書中的程序,并修改服務(wù)器的功能(自己思考),改寫成多線程web服務(wù)器(選作),附上源代碼,并加關(guān)鍵代碼注釋。服務(wù)器:
#include “stdafx.h” #include
for(i=0;i<=1000;i++)//循環(huán)控制 { memset(buf, 0, sizeof(buf));if((rval = recv(msgsock, buf, sizeof(buf),0)< 0))perror(”reading stream message“);if(rval == 0)
printf(”%sn“, buf);} } closesocket(msgsock);} while(TRUE);closesocket(msgsock);
客戶端:
#include ”stdafx.h“ #include
for(i=0;i<=1000;i++)//循環(huán)控制 { memset(buf, 0, 1024);scanf(”%s“,&buf);rval = send(fd, buf, strlen(buf)+ 1,0);if(rval < 0)printf(”Write error!“);} } closesocket(fd);exit(5);} return 0;
b.給出程序調(diào)試和運行的截圖。
c.回答下列問題:
(1)為什么在服務(wù)器和客戶端要包含winsock2.h文件?
答:用Winsock2 API,這樣有助于對異步、非阻塞Socket編程機(jī)制的理解。為了簡單起見,服務(wù)器端和客戶端的應(yīng)用程序均是基于MFC的標(biāo)準(zhǔn)對話框,網(wǎng)絡(luò)通信部分基于Winsock2 API實現(xiàn)。
(2)為什么在服務(wù)器和客戶端程序中要加入#pragma comment(lib,”ws2_32.lib")語句,如果不加會出現(xiàn)什么問題?
答:用該語句,指示編譯當(dāng)前單元時,linker會優(yōu)先鏈接該preproccessor 指定的lib文件,這樣等于就告訴編譯器有這樣一個lib文件可以去鏈接。如果不加就會出現(xiàn)類似“LNK2019: 無法解析的外部符號__imp__closesocket@4,該符號在函數(shù)_wmain 中被引用”的錯誤。
(3)為什么在服務(wù)器和客戶端程序中要使用WSAStartup函數(shù),如果不用程序會有什么問題?
答:使用Winsock庫函數(shù)之前,必須先調(diào)用函數(shù)WSAStartup,該函數(shù)負(fù)責(zé)初始化動態(tài)連接庫Ws2_32.dll.若ws2_32.dll尚未初始化,是無法調(diào)用WSAGetLastError.WSAStartup是任何使用Winsock的應(yīng)用程序或者 DLL首先必須調(diào)用Winsock庫函數(shù).一方面它初始化 ws2_32.dll,另一方面他用于在應(yīng)該程序DLL與系統(tǒng)Winsock庫版本協(xié)商。所以,如果不用該函數(shù)程序?qū)o法按照正常的情況進(jìn)行。
(4)如果程序在Turbo C環(huán)境下運行,在服務(wù)器和客戶程序中還需要上面的內(nèi)容嗎?
答:不需要。
(5)如果服務(wù)器程序中沒有memset(server.sin_zero, 0,sizeof(server.sin_zero));語句,程序會出現(xiàn)什么錯誤,為什么?
答:此函數(shù)是為新申請的內(nèi)存做初始化工作。如果去掉該語句在理論上面應(yīng)該有錯誤,但是在我的實際操作中卻沒有錯誤,這個問題在我將繼續(xù)深究。
(6)如果先運行客戶端程序,程序會有什么現(xiàn)象,為什么會有這一現(xiàn)象?
答:無法連接。因為如果先運行客戶端的話,沒有服務(wù)器端等待,那么服務(wù)器端艱苦肯定無法給予響應(yīng),所以也就無法連接。
(7)如果服務(wù)器程序所在計算機(jī)沒有連接網(wǎng)絡(luò),程序會發(fā)生什么錯誤?我們捕獲到什么錯誤信息?
答:無法連接。會出現(xiàn)報錯。
(8)上述服務(wù)器是串行處理多個客戶端的請求,如何該成并發(fā)處理的服務(wù)器?
答:用父進(jìn)程調(diào)用accept,然后調(diào)用fork,這樣,已連接套接口就在父進(jìn)程與子進(jìn)程間共享,一般來說,接下來便是子進(jìn)程讀、寫已連接套接口并關(guān)閉偵聽套接口,而父進(jìn)程則關(guān)閉已連接套接口。
5.實驗環(huán)境:提供的Socket程序在visual c++ 2008中的設(shè)置(1)創(chuàng)建工程
(2)在應(yīng)用程序開發(fā)中選擇預(yù)編譯頭
(3)源程序有如下改變,winsock2.h windows.h頭文件順序要改變
#include
第三篇:計算機(jī)網(wǎng)絡(luò)實驗三報告
實驗三 交換機(jī)配置
一、實驗?zāi)康?/p>
1、掌握交換機(jī)在網(wǎng)絡(luò)中的作用及交換機(jī)設(shè)備的選型。
2、掌握交換機(jī)的工作原理。
3、掌握利用超級終端對交換機(jī)配置的過程。
4、掌握Cisco2950交換機(jī)的基本配置方法,了解各交換機(jī)配置命令的作用。
二、實驗屬性
驗證性實驗。
三、實驗儀器設(shè)備及器材 硬件環(huán)境:Cisco 2950交換機(jī)、Windows操作系統(tǒng)的PC機(jī),有關(guān)連接線。2 軟件環(huán)境 Windows xp操作系統(tǒng),Packet Tracer 5仿真軟件
四、實驗要求
1、熟練掌握Cisco交換機(jī)基本配置命令及各命令的作用。
2、試驗中正確使用儀器設(shè)備,獨立操作。
3、試驗后按規(guī)定要求寫出實驗報告。
五、實驗內(nèi)容和步驟
1、終端控制臺(console口)的連接和配置 PC機(jī)作為控制終端使用,用翻轉(zhuǎn)線連接PC機(jī)的串口與交換機(jī)的console口,Pcaket Tracer仿真軟件中實驗圖如圖1,可以多連接幾臺PC機(jī),其中連線選用console,連接PC機(jī)的RS232接口。
圖1 Pcaket Tracer仿真實驗圖
(1)“開始”菜單“程序”→“附件”→“通信”→“超級終端”打開超級終端。(2)新建連接,選擇PC機(jī)使用的串口(本實驗為COM1),并將該串口設(shè)置為波特率9600波特、數(shù)據(jù)位8位、奇偶校驗位無、停止位1位、數(shù)據(jù)流控制無?;蛘咧苯狱c擊“還原為默認(rèn)值”即可;如圖2所示。
圖2 com1屬性對話框 圖3 超級終端登陸界面
以上兩步在packet tracer軟件操作為:鼠標(biāo)點擊PC,然后選擇“Desktop”,再點擊tenminal。(3)進(jìn)入超級終端程序后,單擊“回車”鍵,系統(tǒng)將收到交換機(jī)的回送信息,如圖3。
2、交換機(jī)配置模式及幫助
交換機(jī)配置模式是用于不同級別的命令對交換機(jī)進(jìn)行配置,同時提供了一定的安全性、規(guī)范性。
3、交換機(jī)工作模式切換
(1)登陸交換機(jī),進(jìn)入用戶模式。連接交換機(jī)并且登陸。請注意現(xiàn)在交換機(jī)上的顯示符號。顯示如下:Switch>
(2)使用命令(?)查看在用戶模式下所支持的命令。
Exec commands: <1-99> Session number to resume connect Open a terminal connection disconnect Disconnect an existing network connection enable Turn on privileged commands exit Exit from the EXEC logout Exit from the EXEC ping Send echo messages resume Resume an active network connection show Show running system information telnet Open a telnet connection terminal Set terminal line parameters traceroute Trace route to destination(3)進(jìn)入特權(quán)模式,輸入(enable)。如果交換機(jī)有密碼保護(hù)那么此時需要輸入確認(rèn)密碼。注意現(xiàn)在的提示符和用戶模式的差別,Switch#(4)使用命令(?)查看在特權(quán)模式下所支持的命令,注意和用戶模式下的區(qū)別。
Exec commands: <1-99> Session number to resume clear Reset functions clock Manage the system clock configure Enter configuration mode connect Open a terminal connection copy Copy from one file to another debug Debugging functions(see also 'undebug')delete Delete a file dir List files on a filesystem disable Turn off privileged commands disconnect Disconnect an existing network connection enable Turn on privileged commands erase Erase a filesystem exit Exit from the EXEC logout Exit from the EXEC more Display the contents of a file no Disable debugging informations ping Send echo messages 2 reload Halt and perform a cold restart resume Resume an active network connection setup Run the SETUP command facility(5)進(jìn)入全局配置模式,輸入命令(configure terminal 或 config t)。提示符顯示如下:Switch(config)#(6)使用命令(?)查看在全局配置模式下所支持的配置命令。
Configure commands: banner Define a login banner boot Boot Commands cdp Global CDP configuration subcommands clock Configure time-of-day clock do To run exec commands in config mode enable Modify enable password parameters end Exit from configure mode exit Exit from configure mode hostname Set system's network name interface Select an interface to configure ip Global IP configuration subcommands line Configure a terminal line mac-address-table Configure the MAC address table no Negate a command or set its defaults service Modify use of network based services spanning-tree Spanning Tree Subsystem username Establish User Name Authentication vlan Vlan commands vtp Configure global VTP state(7)退出全局配置模式,使用快捷鍵(Ctrl+Z)退出全局配置模式,進(jìn)入特權(quán)模式。也可以使用命令(exit)退出全局配置模式。
(8)退出特權(quán)模式,使用命令(disable)從特權(quán)模式會到用戶模式。
(9)退出交換機(jī),使用命令(exit)退出交換機(jī)。這個命令可以用來從特權(quán)模式中退出交換機(jī)。
4、交換機(jī)名稱、口令設(shè)置
(1)通過超級終端進(jìn)入交換機(jī),并進(jìn)入全局模式,鍵入命令:
Switch(config)#hostname switch2950 Switch2950(config)# 交換機(jī)的命令提示行的名稱由Switch更改為Switch2950。
(2)全局模式下,設(shè)定明文口令cisco,此口令可以限制對特權(quán)模式的訪問。在配置文件中可以看見口令。
Switch2950(config)#enable password cisco(3)全局模式下,設(shè)定加密口令Cisco,此口令可以限制對特權(quán)模式的訪問。
Switch2950(config)#enable secret cisco(4)接口模式下,設(shè)定控制臺終端的登陸口令為cisco。
Switch2950(config)#line console 0 //進(jìn)入接口模式 Switch2950(config-line)#login //會提示設(shè)置密碼
Switch2950(config-line)#password cisco(5)接口模式下,設(shè)定遠(yuǎn)程登陸口令為cisco Switch2950(config)#line vty 0 4 Switch2950(config)#login Switch2950(config)#password cisco 注:vty 0 4 是5個不同的虛擬終端連接。
(6)以上口令設(shè)置中,除了enable secret設(shè)置加密口令外,其余均可通過show run命令在配置文件中查看??梢酝ㄟ^全局命令將明文口令加密。
Switch2950(config)#service password-encryption(7)交換機(jī)命令歷史,Cisco交換機(jī)會保存輸入過的命令,并可以對保存的命令的個數(shù)進(jìn)行設(shè)置,同時可以再次通過快捷方式進(jìn)行使用,這在再次輸入很長或很復(fù)雜的命令時很有用。缺省情況下,系統(tǒng)會保存10條命令,最大可以設(shè)置256條命令。
設(shè)置命令行數(shù)為100 Switch2950#terminal history size 100(8)任何時候可以使用show running-config命令查看命令配置,可以在特權(quán)模式下使用copy running-config startup-config命令保存配置。
5、交換機(jī)VLAN設(shè)定
(1)在Cisco 2950上定義三個VLAN,分別取名為engineer , account, manager;Switch#vlan database VLAN 3 added: Name: engineer Switch(vlan)#vlan 4 name account VLAN 4 added: Name: account Switch(vlan)#vlan 5 name manager VLAN 5 added: Name: manager Switch(vlan)#apply
//進(jìn)入vlan配置模式,database為虛擬局域網(wǎng)編號
Switch(vlan)#vlan 3 name engineer //定義vlan名稱及vlan號
(2)將端口12-15 加入到engineer 當(dāng)中,端口16-18 加入到account 當(dāng)中,端口24 加入到manager 當(dāng)中。
Switch(config)#interface range fastEthernet 0/12 – 15 //將端口12-15加入到vlan中
Switch(config-if-range)#switchport mode access Switch(config-if-range)#switchport access vlan 3 Switch(config-if-range)#interface range fastethernet 0/16-18 Switch(config-if-range)#switchport mode access Switch(config-if-range)#switchport access vlan 4 Switch(config)#interface fastethernet 0/24 //將一個端口加入到vlan中,單端口模式 Switch(config-if)#switchport mode access Switch(config-if)#switchport access vlan 5(3)返回到特權(quán)模式,用 show vlan查看vlan情況。
第四篇:數(shù)據(jù)庫原理實驗三
數(shù)據(jù)庫原理及應(yīng)用實驗報告
實驗名稱:存儲過程 實驗類型:驗證型 實驗環(huán)境:oracle 11g 指導(dǎo)教師:陳 駿 專業(yè)班級:信安1505班 姓
名:
學(xué)
號:512015 聯(lián)系電話:電子郵件: 實驗地點:東6E501 實 驗 日 期: 2017年5月10日 實驗報告日期:2017年 5月 11日
成績:__________________________
一、實驗?zāi)康?/p>
(1)了解存儲過程的概念、優(yōu)點
(2)熟練掌握創(chuàng)建存儲過程的創(chuàng)建方法(3)熟練掌握存儲過程的調(diào)用方法
二、實驗平臺
Oracle 11g
三、實驗步驟、出現(xiàn)的問題及解決方案(不能解決的將問題列出)(1)實驗步驟
1)建立存儲過程完成圖書管理系統(tǒng)中的借書功能。
功能要求:
? 借書時要求輸入借閱流水號,借書證號,圖書編號。(即該存儲過程有3個輸入?yún)?shù))
? 借書時,借書日期為系統(tǒng)時間。? 圖書的是否借出改為‘是’
2)建立存儲過程完成圖書管理系統(tǒng)中的預(yù)約功能。? 預(yù)約時要求輸入預(yù)約流水號,借書證號,ISBN。(即該存儲過程有3個輸入?yún)?shù))
? 存儲過程先檢查輸入的ISBN版本的圖書是否都已借出,如果是則進(jìn)行預(yù)約,否則提示“該書目有可借圖書,請查找”。? 預(yù)約時間為系統(tǒng)時間。
3)建立存儲過程完成圖書管理系統(tǒng)中的還書功能。
? 還書時要求輸入借書證號,圖書編號,罰款分類號(即該存儲過程有3個輸入?yún)?shù))。
? 還書日期為系統(tǒng)時間。? 圖書的是否借出改為‘否’。
(2)問題及解決方案
1)問題一:步驟一無法執(zhí)行
原因:已創(chuàng)建的table中無“借書”項
解決方案:將原代碼中的“借書”改為“借閱” 2)問題二:步驟二中出現(xiàn)無法識別的符號 原因:將英文分號誤寫為中文分號
解決方案:修正為英文分號“;”
四、思考與總結(jié)
(1)書寫存儲語句時,應(yīng)注意涉及的表格和屬性名應(yīng)與創(chuàng)建表格時相同(2)注意區(qū)分中英文符號,避免出現(xiàn)符號無法識別以及程序沒有結(jié)尾等錯誤(3)注意空格的使用,避免出現(xiàn)缺少或多余的空格,造成語法錯誤
五、附:實驗完整源代碼
1、CREATE OR REPLACE PROCEDURE PRO_借書功能(VAL_借閱流水號 IN 借閱.借閱流水號%TYPE, VAL_借書證號 IN 借閱.借書證號%TYPE, VAL_圖書編號 IN 借閱.圖書編號%TYPE)AS BEGIN INSERT INTO 借閱(借閱流水號,借書證號,圖書編號,借書日期)VALUES(VAL_借閱流水號,VAL_借書證號,VAL_圖書編號,TO_CHAR(SYSDATE(),'YYYY/MM/DD'));UPDATE 圖書 SET 是否借出='是' WHERE 圖書.圖書編號 =VAL_圖書編號;DBMS_OUTPUT.PUT_LINE(' 本次借書操作完成!');END;
2、CREATE OR REPLACE PROCEDURE PRO_預(yù)約功能(Y_預(yù)約流水號 IN 預(yù)約.預(yù)約流水號%TYPE, Y_借書證號 IN 預(yù)約.借書證號%TYPE, Y_ISBN IN 圖書.ISBN%TYPE)AS Y_NUMBER BINARY_INTEGER;BEGIN SELECT COUNT(*)INTO Y_NUMBER FROM 圖書 WHERE 圖書.ISBN=Y_ISBN AND 圖書.是否借出='否';IF Y_NUMBER=0 THEN INSERT INTO 預(yù)約(預(yù)約流水號,借書證號,ISBN,預(yù)約時間)VALUES(Y_預(yù)約流水號,Y_借書證號,Y_ISBN,TO_CHAR(SYSDATE(),'YYYY/MM/DD'));DBMS_OUTPUT.put_line('可執(zhí)行預(yù)約!');ELSE DBMS_OUTPUT.put_line('該書可借,請查找!');END IF;END;
3、CREATE OR REPLACE PROCEDURE PRO_還書功能(VAL_借書證號 IN 借閱.借書證號%TYPE, VAL_圖書編號 IN 借閱.圖書編號%TYPE, 4 VAL_罰款分類號 IN 借閱.罰款分類號%TYPE)AS VAL_TIME DATE;BEGIN SELECT SYSDATE INTO VAL_TIME FROM DUAL;UPDATE 借閱 SET 歸還日期=VAL_TIME WHERE 借書證號 =VAL_借書證號 AND 借閱.圖書編號=VAL_圖書編號;UPDATE 圖書 SET 是否借出='否' WHERE 圖書.圖書編號 =VAL_圖書編號;UPDATE 借閱 SET 罰款分類號=VAL_罰款分類號 WHERE 借書證號 =VAL_借書證號 AND 借閱.圖書編號=VAL_圖書編號;DBMS_OUTPUT.PUT_LINE(' 本次還書操作完成!END;
');
數(shù)據(jù)庫原理及應(yīng)用實驗報告
實驗名稱:觸發(fā)器 實驗類型:驗證型 實驗環(huán)境:oracle 11g 指導(dǎo)教師:陳 駿 專業(yè)班級:信安1505班 姓
名:李 維 學(xué)
號:5120155364 聯(lián)系電話:*** 電子郵件: 實驗地點:東6E501 實 驗 日 期: 2017年5月10日實驗報告日期:2017年 5月 10日
成績:__________________________
一、實驗?zāi)康?/p>
(1)了解觸發(fā)器的概念、優(yōu)點(2)掌握觸發(fā)器的方法和步驟(3)掌握觸發(fā)器的使用
四、實驗平臺
Oracle 11g
五、實驗步驟、出現(xiàn)的問題及解決方案(不能解決的將問題列出)(3)實驗步驟
1)通過序列和觸發(fā)器實現(xiàn)借閱表中借閱流水號字段的自動遞增。
2)通過序列和觸發(fā)器實現(xiàn)預(yù)約表中預(yù)約流水號字段的自動遞增
3)修改實驗三借書功能的存儲過程。
該存儲過程要求: ? 借書時輸入借書證號,圖書編號。(即該函數(shù)有2個輸入?yún)?shù))
? 借書時,借書日期為系統(tǒng)時間。
*該存儲過程主體部分只有insert into語句。
4)建立與借書存儲過程相對應(yīng)的觸發(fā)器,當(dāng)借閱表中加入借閱信息時,該觸發(fā)器觸發(fā),自動修改所借圖書的是否借出改為‘是’。
5)修改實驗三還書功能的存儲過程。
該存儲過程要求:
? 還書時輸入借書證號,圖書編號。(即該函數(shù)有2個輸入?yún)?shù))? 還書時,還書日期為系統(tǒng)時間。
*該存儲過程主體部分只有一條UPDATE語句。
6)建立與還書存儲過程相對應(yīng)的觸發(fā)器,當(dāng)借閱表中填入還書日期時,該觸發(fā)器觸發(fā),自動修改所還圖書的是否借出為‘否’。
2(4)問題及解決方案
1)問題一:步驟一中無法識別“seq_id”標(biāo)識符 原因:未創(chuàng)建seq_id序列 解決方案:先創(chuàng)建該序列
2)問題二:步驟3無法執(zhí)行
原因:已創(chuàng)建的table中無“借書”項
解決方案:將原代碼中的“借書”改為“借閱” 3)問題三:步驟二中出現(xiàn)無法識別的符號 原因:將英文分號誤寫為中文分號 解決方案:修正為英文分號“;” 4)問題四:
原因:變量賦值過程中使用了錯誤的賦值語句 解決方案:將bnum改為圖書編號
五、思考與總結(jié)
(4)在創(chuàng)建trigger之前應(yīng)先創(chuàng)建sequence,避免出現(xiàn)序列號無法識別的錯誤(5)書寫存儲語句時,應(yīng)注意涉及的表格和屬性名應(yīng)與創(chuàng)建表格時相同(6)注意區(qū)分中英文符號,避免出現(xiàn)符號無法識別以及程序沒有結(jié)尾等錯誤(7)注意區(qū)別where和having的用法
(8)注意空格的使用,避免出現(xiàn)缺少或多余的空格,造成語法錯誤
六、附:實驗源代碼
(1)create sequence seq_借閱 start with 8 increment by 1 nomaxvalue nocycle nocache;create or replace trigger tr_借閱流水號 before insert on 借閱 for each row
begin
select seq_借閱.nextval into :new.借閱流水號 from dual;
end;
(2)create sequence seq_預(yù)約 start with 8 increment by 1 nomaxvalue nocycle nocache;create or replace trigger tr_預(yù)約流水號 before insert on 預(yù)約 for each row
begin
select seq_預(yù)約.nextval into :new.預(yù)約流水號 from dual;
end;
(3)create or replace procedure p_borrow_book_xg(p_jszh in number,p_tsbh in number)as v_sfjc 圖書.是否借出%type;begin
select 是否借出 into v_sfjc from 圖書 where 圖書編號=p_tsbh;
if v_sfjc='否' then
insert into 借閱(借書證號,圖書編號,借書日期)
values(p_jszh,p_tsbh,to_date(to_char(sysdate,'YYYY/MM/DD'),'YYYY/MM/DD'));
--update 圖書 set 是否借出='是' where 圖書編號=p_tsbh;
commit;
else
dbms_output.put_line('該圖書已經(jīng)借出!');
end if;end;(4)create or replace trigger tr_借書 before insert on 借閱 for each row
begin
if inserting then
update 圖書 set 是否借出='是' where 圖書編號=:new.圖書編號;
select seq_借閱.nextval into :new.借閱流水號 from dual;
end if;
end;(5)create or replace procedure p_return_圖書(p_借書證號 in number,p_圖書編號 in number)as begin
update 借閱 set 歸還日期=to_date(to_char(sysdate,'YYYY/MM/DD'),'YYYY/MM/DD'),罰款分類號=p_罰款分類號 where 借書證號=p_借書證號 and 圖書編號=p_圖書編號;
update 圖書 set 是否借出='否' where 圖書編號=p_圖書編號;
commit;
end;(6)create or replace trigger tr_還書
after update
on 借閱
for each row begin
if updating then
update 圖書 set 是否借出 = '否' where 圖書編號 = :new.圖書編號;
end if;end;
第五篇:計算機(jī)網(wǎng)絡(luò)原理實驗三winsock套接字編程實驗報告
實驗
三、WINSOCK套接字編程實驗報告
序號:姓名:學(xué)號:成績
1.實驗?zāi)康模?/p>
用C或JAVA語言編寫客戶端、服務(wù)器程序,實現(xiàn)基于TCP或UDP的網(wǎng)絡(luò)通信數(shù)據(jù)傳輸服務(wù),熟悉基于TCP或UDP的Socket編程原理。
2.實驗環(huán)境:
建立在TCP/IP 網(wǎng)絡(luò)體系結(jié)構(gòu)之上計算機(jī)網(wǎng)絡(luò)實驗環(huán)境。各計算機(jī)除了安裝TCP/IP 軟件外,還安裝了TCP/IP 開發(fā)系統(tǒng)。計算機(jī)具備Windows環(huán)境中套接字socket 的編程接口功能,可為用戶提供全網(wǎng)范圍的進(jìn)程通信功能。
3.實驗指導(dǎo):
參見套接字編程實驗指導(dǎo)
4.實驗步驟
(1)運行指導(dǎo)書中給出的參考程序,分析實驗結(jié)果,并回答問題(1)-(3)
(2)根據(jù)給定參考程序修改代碼,完善修改服務(wù)器和客戶端的功能。并回答問題(4)-(5)
5.實驗結(jié)果分析
(1)為什么在服務(wù)器和客戶端要包含winsock2.h文件?
(2)為什么在服務(wù)器和客戶端程序中要加入#pragma comment(lib,“ws2_32.lib”)
語句,如果不加會出現(xiàn)什么問題?
(3)為什么在服務(wù)器和客戶端程序中要使用WSAStartup函數(shù),如果不用,程序會有
什么問題?
(4)修改后的程序完成實現(xiàn)了什么功能,附上修改后的源代碼。(修改或填加的代
碼用波浪線標(biāo)注,并填加注釋),并附上實驗截圖
(5)請詳細(xì)說明此實驗在設(shè)計及運行時遇到的問題和解決辦法,及實驗體會及建議。