水信息網(wǎng)絡傳輸技術(shù)課程設計報告_第1頁
已閱讀1頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、<p>  水信息網(wǎng)絡傳輸技術(shù)課程設計報告</p><p>  2010年 1 月12日</p><p><b>  目 錄</b></p><p><b>  1.概述1</b></p><p>  2 .設計依據(jù)及框圖1</p><p>  2.1 設計平

2、臺2</p><p>  2.2 用戶界面2</p><p>  3.各模塊功能及軟件開發(fā)3</p><p>  3.1 各模塊功能簡介3</p><p>  3.2 軟件開發(fā)流程5</p><p>  4.軟件調(diào)試分析5</p><p><b>  5.設計心得5<

3、;/b></p><p><b>  參考文獻5</b></p><p><b>  附 錄6</b></p><p>  基于UDP協(xié)議的局域網(wǎng)通訊程序</p><p><b>  1.概述</b></p><p>  現(xiàn)代社會是一個計

4、算機網(wǎng)絡和PC技術(shù)空前大發(fā)展的時代,各個傳統(tǒng)學科都在積極地與這兩個新生事物相融合,以謀求學科的新發(fā)展。在此背景下,農(nóng)業(yè)水利專業(yè)信息化方向應運而生,《水信息網(wǎng)絡傳輸技術(shù)》作為該方向中的課程之一,涉及水利和計算機兩個領域,是一門綜合性的課程。本課程從實用性和先進性出發(fā),系統(tǒng)的介紹了計算機、通信和網(wǎng)絡基礎知識,然后對數(shù)據(jù)通信、網(wǎng)絡結(jié)構(gòu)、局域網(wǎng)技術(shù)、Internet網(wǎng)絡、網(wǎng)站組建技術(shù)、網(wǎng)頁制作等多方面的知識進行了詳細的論述。</p>

5、<p>  為了加深對于該課程的理解,課程中特別安排了課程設計這一環(huán)節(jié)。</p><p>  在本次課程設計中,設計題目是編寫一個簡單的基于局域網(wǎng)的聊天程序,使分布在局域網(wǎng)內(nèi)的兩臺計算機可以實現(xiàn)實時通信,系統(tǒng)結(jié)構(gòu)如圖-1所示。程序很簡單,只有短短的幾十行,但“麻雀雖小,五臟俱全”,它已經(jīng)具備了現(xiàn)在流行聊天程序的大體框架和設計思想。</p><p>  整個程序采用Visual

6、 Basic 6.0來實現(xiàn),由于在《水信息計算機應用技術(shù)》和《水信息網(wǎng)絡傳輸技術(shù)》中,我們系統(tǒng)地學習了Visual Basic編程語言和計算機網(wǎng)絡方面的相關知識,所以這次設計也是對前期學習成果的一次“實戰(zhàn)檢驗”。</p><p>  2 .設計依據(jù)及用戶界面</p><p>  該設計中所涉及到的網(wǎng)絡通信協(xié)議主要是TCP/IP協(xié)議。TCP/IP協(xié)議是以傳輸控制協(xié)議TCP(Transmiss

7、ion Control Protocol)和網(wǎng)際協(xié)議IP(Internet Protocol)為核心的一組協(xié)議。</p><p>  TCP/IP協(xié)議自1974年誕生以來,逐步投入實際網(wǎng)絡應用中,在1980年被加入UNIX內(nèi)核,1983年1月1日又成為ARPnet(世界最早采用分組交換技術(shù)的廣域網(wǎng)絡)上唯一的正式協(xié)議?,F(xiàn)在已經(jīng)是國際互聯(lián)網(wǎng)的標準協(xié)議。</p><p>  TCP/IP協(xié)議采

8、用分組交換通信方式,即兩臺計算機之間要交換的信息不是作為一個整體進行傳輸,而是劃分成大小基本相同的數(shù)據(jù)分組,這樣的傳輸方式可以提高效率和安全性。 </p><p>  TCP/IP協(xié)議有三個主要的特點:功能豐富、開放性和普遍性。</p><p>  圖-2 TCP/IP參考模型</p><p><b>  2.1 設計平臺</b></

9、p><p>  設計中所涉及到的計算機編程語言是Visual Basic,程序開發(fā)平臺采用Visual Basic 6.0。序開發(fā)平臺采用Visual Basic 6.0。Visual Basic是早期Basic語言的基礎上發(fā)展起來的一種可視化的Windows平臺上的程序開發(fā)工具。最早的VB出現(xiàn)于1991年,即VB 1.0版本。它標志著Microsoft開始將Basci語言向可視化編程方向發(fā)展,雖然它的功能極其有限,

10、但卻有跨時代的意義。伴隨著Windows操作平臺的不斷成熟,VB版本也不斷升級。從1991年秋季推出VB 2.0到1998年秋季推出VB 6.0,短短的幾年內(nèi)VB有了巨大的提高,也一步步更加完善。</p><p>  VB 6.0為滿足不同層次的用戶需要,提供了三個版本:學習版(Learning)、專業(yè)版(Professional)和企業(yè)版(Enterprise)。我們主要用的是專業(yè)版,專業(yè)版包括所有的內(nèi)部標準

11、控件以及網(wǎng)絡、表格和數(shù)據(jù)綁定等控件還包括ActiveX控件、Internet控件和Crystal Report Writer等開發(fā)工具,適用于專業(yè)開發(fā)人員。</p><p><b>  2.2 用戶界面</b></p><p>  該程序設計的界面如圖-3所示,風格簡潔。</p><p>  圖-3 程序設計的界面</p><

12、;p>  3.各模塊功能及軟件開發(fā)</p><p>  3.1 各模塊功能簡介</p><p>  在該程序的設計中,要使用到以下常用控件,見表-1。</p><p><b>  表-1 常用控件</b></p><p><b>  常用控件簡介</b></p><p&g

13、t;  窗體控件(Form):窗體(Form)是設計圖形用戶界面的基本平臺,所有的控件都是繪制在窗體上的。程序運行時的每一個窗體對應于程序的一個窗口,是用戶與應用程序交互操作的場所。</p><p>  文本框(TextBox):文本框是VB的一個重要控件,可用來顯示和輸入數(shù)據(jù)。實質(zhì)上,文本框控件相當于一個簡單的文本編輯器,它具有復制、剪切、粘貼和刪除等功能,只不過在文本框中只能輸入或顯示最大為32768字節(jié)(3

14、2KB)的字符串。</p><p>  標簽框(Label): 標簽的功能比較簡單,通常用來顯示比較固定的提示性信息,不允許用戶在程序運行時輸入數(shù)據(jù)。</p><p>  按鈕(Command): 命令按鈕是Windows 程序中常見的一種命令控制方式,用于接收用戶的操作信息,并引發(fā)應用程序的某個操作。如同日常生活的按鈕一樣,當用戶用鼠標單擊命令按鈕或選中命令按鈕單擊<Enter

15、>回車鍵時,就會激活相應的事件過程,所以有時命令按鈕也簡稱為“按鈕”。</p><p>  框架(Frame):框架是一種比較特殊的容器控件,常作為輔助性控件使用,可將多個選項按鈕或復選框控件按功能分組。當用框架將多個控件劃分成一組時,應先在窗體上放置框架,然后再在框架控件內(nèi)放置其他控件。</p><p>  控件WinSock:</p><p>  該控件是

16、Windows下的應用程序與網(wǎng)絡協(xié)議之間的標準接口。利用WinSock控件可以與遠程計算機建立連接,并通過用戶數(shù)據(jù)文報協(xié)議 (UDP)或者傳輸控制協(xié)議 (TCP)進行數(shù)據(jù)交換。這兩種協(xié)議都可以用來創(chuàng)建客戶與服務器應用程序。與 Timer控件類似,WinSock控件在運行時是不可見的。 </p><p>  在本設計中我們用到了以下幾個WINSOCK的屬性:</p><p>  1) PRO

17、TOCOL(控制協(xié)議)屬性,在本設計中,我們將PROTOCOL屬性設置為sckUDPProtocol。 </p><p>  2) 屬性RemoteHost是遠程主機的地址,LocalPort、RemotePort分別本地主機的端口和遠程主機端口,對客戶來說,該屬性指定發(fā)送數(shù)據(jù)的本地端口,而對于服務器來說,這是用于偵聽的本地端口,我們在設置這兩個屬性時必須保證兩臺主機的端口值符合下面規(guī)則,即主機1的LocalPo

18、rt等于主機2的RemotePort值,同樣主機1的RemotePort等于主機2的LocalPort值,這樣才能保證兩機通訊的正常進行。 </p><p>  3) LocalIP屬性用于返回本地機器的 IP地址,格式是IP地址加點的字符串 (xxx.xxx.xxx.xxx)。 </p><p>  在本設計中我們用到了以下幾個WINSOCK的方法: </p><p&

19、gt;  1) 在創(chuàng)建 UDP 應用程序時調(diào)用了 Bind 方法,這是必須的。Bind 方法的作用是為控件“保留”一個本地端口。例如,如果將控件綁定到1001號端口,那么其它應用程序?qū)⒉荒苁褂迷摱丝谶M行“監(jiān)聽”。該方法阻止其它應用程序使用同樣的端口。</p><p>  2) SendData方法用于發(fā)送一條數(shù)據(jù)給另一臺主機,使用這個方法的語法是:WinSock.SendData [要發(fā)送的數(shù)據(jù)]</p&g

20、t;<p>  3) GetData方法。當DataArrival事件出現(xiàn)時,代碼調(diào)用GetData方法獲取數(shù)據(jù),并將數(shù)據(jù)存儲在字符串變量中。使用語法是:</p><p>  WinSock.GetData [接收數(shù)據(jù)的變量] </p><p>  在本設計中我們用到了以下WINSOCK的事件:</p><p>  DataArrival事件:在本設計

21、中我們使用了DataArrival事件,DataArrival事件在當新數(shù)據(jù)到達時被觸發(fā)的事件,使用的語法為: </p><p>  WinSock1_DataArrival (bytesTotal As Long)        </p><p>  變量bytesTotal表示獲取的數(shù)據(jù)總數(shù)量。 </p><p>  在兩個WINSOCK控件中間發(fā)送數(shù)據(jù),關鍵

22、要完成以下三步:</p><p>  1、將RemoteHost屬性設置為另一臺計算機的IP地址。</p><p>  2、將RemotePort屬性設置為第二個控件的LocalPort屬性。</p><p>  3、調(diào)用Bind方法,指定使用的LocalPort。</p><p>  3.2 軟件開發(fā)流程</p><p&

23、gt;  以下介紹軟件的編制步驟:</p><p>  1.打開Visual Basic 6.0的集成開發(fā)環(huán)境,創(chuàng)建一個新的標準EXE文件。將缺省的窗體名修改為frmMain,并將其Caption屬性修改為“局域網(wǎng)聊天程序”。</p><p>  2. 在窗體中添加一個WinSock控件,在其“屬性”頁上,單擊“協(xié)議”,并將協(xié)議修改為sckUDPProtocol。爾后陸續(xù)添加其他控件(詳見

24、3.1節(jié)內(nèi)容),并修改其相應的屬性。</p><p>  3.編寫代碼,由于代碼較長,這里不再展開敘述,詳見附錄。</p><p>  4.代碼編寫完成后,將程序生成“Chat.EXE”文件,到此該軟件開發(fā)完成。</p><p><b>  4.軟件調(diào)試分析</b></p><p>  將“Chat.EXE”程序,分別安

25、裝到局域網(wǎng)內(nèi)的兩臺計算機上,如圖-4所示。</p><p><b>  圖-4 程序調(diào)試圖</b></p><p>  按照圖中的標注,分別設置A、B兩臺計算機中Chat.exe程序的各項參數(shù)。然后點擊“連接”,連接成功后,在程序的狀態(tài)欄中會顯示“連接成功”字樣,此時聊天方可進行。</p><p><b>  圖-5軟件調(diào)試圖<

26、/b></p><p><b>  5.設計心得</b></p><p>  這次課程設計的核心是熟練掌握VB語言,并將它運用到網(wǎng)絡設計中。如何將課本中基本的程序代碼,正確靈活得運用到實際程序當中,并能夠使其發(fā)揮作用,保證程序的正常運行是難點。</p><p>  在此次設計當中,最常出現(xiàn)的問題就是當運用到哪個控件和代碼時,有印象但必須借

27、助課本才能準確書寫,又或者在某項任務中,不知該如何選擇程序,這都是基本功不扎實的表現(xiàn)。因此,反復鞏固vb語言的的基本知識,多動手多動腦是學好vb語言的關鍵。</p><p>  通過這次課程設計,對vb語言的實際應用有了更加深刻的體驗,并且可以將他用到自己的其他專業(yè)課程中,這是學以致用的精髓體現(xiàn)。</p><p><b>  參考文獻</b></p>&

28、lt;p>  VB程序設計 胡 閆宏印。北京: 電子工業(yè)出版社,2006(宋體 五號)</p><p>  計算機網(wǎng)絡 張增量 李生元。西安: 西安交通大學出版社</p><p><b>  附 錄</b></p><p>  Option Explicit</p><p>  Private Ignore

29、Text As Boolean</p><p>  '------------------------------------------------------------------------------</p><p>  '當CLEAR按鈕按下時,清空TEXT1和TEXT2中的內(nèi)容</p><p>  Private Sub cmdClea

30、r_Click()</p><p>  On Error Resume Next</p><p>  Text1 = ""</p><p>  With Text2</p><p><b>  '清空輸入框</b></p><p>  .Text = " &q

31、uot;</p><p>  '并把焦點置于TEXT2</p><p><b>  .SetFocus</b></p><p><b>  End With</b></p><p><b>  End Sub</b></p><p>  '

32、;------------------------------------------------------------------------------</p><p>  '當CONNECT按鈕按下時,進行以下操作</p><p>  Private Sub cmdConnect_Click()</p><p>  On Error GoTo Err

33、Handler</p><p>  With Winsock1</p><p>  '設置 RemoteHost 屬性</p><p>  .RemoteHost = Trim(txtRemoteIP)</p><p>  '設置 RemotePort 屬性</p><p>  'RemoteP

34、ort 屬性的值應該等于 遠程主機上的 LocalHost 屬性的值</p><p>  .RemotePort = Trim(txtRemotePort)</p><p>  'LocalPort 屬性的值是不能改變的,必須檢查它是否已經(jīng)被設置</p><p>  '如果 LocalPort 屬性為空(沒有被設置),將其設為在LocalPort輸入

35、框中輸入的數(shù)值</p><p>  If .LocalPort = Empty Then</p><p>  .LocalPort = Trim(txtLocalPort)</p><p>  Frame2.Caption = .LocalIP</p><p>  '這是必須的,Bind 方法的作用是為控件“保留”一個本地端口,防止被

36、其他用戶調(diào)用。</p><p>  .Bind.LocalPort</p><p><b>  End If</b></p><p><b>  End With</b></p><p>  '為了保證使用者不能改變LocalPort的值,將txtLocalPort輸入框鎖定</p&g

37、t;<p>  txtLocalPort.Locked = True</p><p>  '在狀態(tài)欄中顯示“正在連接”的狀態(tài)</p><p>  StatusBar1.Panels(1).Text = " Connected to " & Winsock1.RemoteHost & " </p><

38、p>  '如果連接正常,做以下設置</p><p>  Frame1.Enabled = True</p><p>  Frame2.Enabled = True</p><p>  Label4.Visible = True</p><p>  Text2.SetFocus</p><p><b&

39、gt;  Exit Sub</b></p><p>  '如果在連接過程中出現(xiàn)錯誤,則轉(zhuǎn)向ErrHandler:,并顯示錯誤提示</p><p>  ErrHandler:</p><p>  MsgBox "Winsock failed to establish connection with remote server",

40、 vbCritical</p><p><b>  End Sub</b></p><p>  '------------------------------------------------------------------------------</p><p>  '當按下“F1”鍵時顯示幫助信息</p>

41、<p>  Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)</p><p>  If KeyCode = vbKeyF1 Then</p><p>  ChDir App.Path</p><p>  '調(diào)用外部程序notepad.exe來打開幫助文本文件</p&

42、gt;<p>  Shell "notepad.exe readme.txt", vbNormalFocus</p><p><b>  End If</b></p><p><b>  End Sub</b></p><p>  '------------------------

43、------------------------------------------------------</p><p>  '當窗體加載時顯示提示信息并在 txtRemoteIP 框中顯示本地主機的IP</p><p>  Private Sub Form_Load()</p><p><b>  Show</b></p&g

44、t;<p>  MsgBox "Winsock UDT Chat" & vbCrLf & "by Theo Kandiliotis (ionikh@hol.gr)" & vbCrLf & vbCrLf & "F1 for help.", vbInformation</p><p>  txtRemot

45、eIP = Winsock1.LocalIP</p><p><b>  End Sub</b></p><p>  '------------------------------------------------------------------------------</p><p>  '接收TEXT2輸入框的按鍵,并

46、做響應</p><p>  Private Sub Text2_KeyPress(KeyAscii As Integer)</p><p>  '定義變量 Last_Line_Feed 來記錄最后輸入行的位置</p><p>  Static Last_Line_Feed As Long</p><p>  '定義 New_L

47、ine 字符串記錄新鍵入的一行文本的內(nèi)容</p><p>  Dim New_Line As String</p><p>  '如果使用者按下CLEAR按鈕對輸入框內(nèi)容清空,這時TEXT2為空,則重設最后輸入行的位置為0</p><p>  If Trim(Text2) = vbNullString Then Last_Line_Feed = 0</

48、p><p>  '當使用者按下ENTER鍵時</p><p>  If KeyAscii = 13 Then</p><p>  '取得最后輸入行的內(nèi)容并賦值給 New_Line 字符串</p><p>  New_Line = Mid(Text2, Last_Line_Feed + 1)</p><p>

49、  '重設最后輸入行的位置</p><p>  Last_Line_Feed = Text2.SelStart</p><p>  '通過 WINSOCK 發(fā)送新輸入的一行文本的內(nèi)容</p><p>  Winsock1.SendData New_Line</p><p>  '在狀態(tài)欄顯示發(fā)送信息</p>

50、<p>  StatusBar1.Panels(2).Text = " Sent " & (LenB(New_Line) / 2) & " bytes "</p><p><b>  End If</b></p><p><b>  End Sub</b></p>

51、;<p>  '------------------------------------------------------------------------------</p><p>  '當 WINSOCK 接收到新的數(shù)據(jù)(信息)時,進行以下響應</p><p>  Private Sub Winsock1_DataArrival(ByVal byte

52、sTotal As Long)</p><p>  '定義 New_Text 字符串來記錄新接收的信息</p><p>  Dim New_Text As String</p><p>  '接收信息并賦值給 New_Text</p><p>  Winsock1.GetData New_Text</p><

53、;p>  '在TEXT1顯示框中顯示新接收到的信息</p><p>  Text1.SelText = New_Text</p><p>  Frame1.Caption = Winsock1.RemoteHostIP</p><p>  '在狀態(tài)欄中顯示接收信息</p><p>  StatusBar1.Panels(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論