青島理工大學琴島學院
網路工程課程設計
設計說明書
電腦科學與技術系
2023年1月5日
網路工程課程設計評閱書
課程設計任務書
2006—2007學年第一學期
專業: 電腦科學與技術學號姓名: 王博偉
課程設計名稱: 網路工程課程設計
設計題目: 基於udp的網上聊天程式
完成期限:自 2006 年 12 月 25 日至 2007 年 1 月 5 日共 2 周
設計依據、要求及主要內容(可另加附頁):
指導教師(簽字教研室主任(簽字
批准日期: 年月日
摘要udp(user datagram protocol)是一種無連線協議,與tcp操作不同,計算機間並不需要建立乙個連線,同時,乙個udp應用可同時作為應用的客戶或伺服器方。本設計採用vb作為開發工具,利用socket套接字實現了基於udp協議的應用程式通訊,並完成了對等聊天程式的設計。
關鍵詞: udp;socket;資料報;通訊 目錄
1 課題描述1
2 設計過程2
2.1 主窗體設計2
2.2 與遠端聊天程式互連2
2.3 向遠端傳送訊息4
2.4 接收遠端程式傳送的訊息5
3 測試6
總結7參考文獻8
1 課題描述
隨著社會發展,internent的迅速普及,人們對實時通訊的要求越來越迫切,需求日益增加,網路聊天已經成為了一大時尚,不少人都有這樣的經歷。使用者資料報協議(udp)是乙個無連線協議,使用這種協議時,並不需要在兩台計算機之間建立固定的連線,也就是說,通訊雙方沒有伺服器和客戶機之分,它們之間進行的是對等通訊。所以它的優勢很明顯。
是現代通訊不可或缺的一部分。
本課題利用socket 套接字實現主機之間的資料通訊,並設計乙個網上聊天程式,實現基於udp的通訊。
開發工具:visual basic
2 設計過程
本次設計的基於udp的網上聊天程式易於實現兩台計算機之間建立固定的連線,適合一般用途通訊的需要。
2.1 主窗體設計
首先,建立乙個新專案,接下來設計主窗體如圖2.1所示。並在窗體上新增乙個執行時不可見的winsock 控制項。
圖2.1 主窗體
2.2 與遠端聊天程式互連
當主窗體載入時,我們首先將本地計算機的ip位址填充到connect with ip文字框中作為預設值。**如下:
private sub form_load()
show
txtremoteip =
end sub
當使用者填寫遠端聊天程式的ip位址後,及雙方事先約定好的埠號時(注意:本地控制項的remoteport屬性應該設為對方控制項的localport屬性,這一點對於對方來說也一樣),單擊connect按鈕就可以實現互連。
此外我們不將遠端聊天程式稱為伺服器,因為在聊天過程中雙方的地位是對等的。單擊connect按鈕時的處理**如下所示:
private sub cmdconnect_click()
on error goto errhandler
with winsock1
'set the remotehost property
.remotehost = trim(txtremoteip)
'set the remoteport property.
'this should be equal to the
'localhost property of the
'remote machine.
.remoteport = trim(txtremoteport)
'the localport property cannot be
'changed,so check if it has already
'been set.
if .localport = empty then
.localport = trim(txtlocalport)
= .localip
.bind .localport
end if
end with
'make sure that the user can't change
'the local port
= true
'show the current status of the connection in
'the status bar
= " connected to " & & " "
= true
= true
= true
exit sub
errhandler:
msgbox "winsock failed to establish connection with remote server", vbcritical
end sub
在cmdconnect_click過程中,udp對等聊天程式執行了如下的幾個步驟:
(1) 讀取connect with ip 文字框內容填充winsock控制項的remotehost屬性。
(2) 讀取remote port 文字框內容填充winsock控制項的remoteport屬性。
(3) 讀取local port 文字框內容填充winsock控制項的localport屬性。
(4) 改變對話內容輸入欄的標題提示。
(5) 呼叫winsock控制項的bind方法繫結本地埠。
(6) 將連線狀態在狀態列上顯示出來。
(7) 將本地埠值鎖定,不允許使用者再做更改。
2.3 向遠端傳送訊息
當使用者在視窗下部的文字框中輸入了一行文字並敲擊回車鍵時,我們的程式就應該將使用者所輸入的內容及時傳送給遠端的聊天程式(而且應該發向已經指定的remoteport 埠),這個過程是在text2文字框的keypress事件中處理完成的(因為我們需要從中檢測使用者敲擊的是否回車鍵),如下所示:
private sub text2_keypress(keyascii as integer)
'the position of the last linefeed within the text
static last_line_feed as long
'the new line of text
dim new_line as string
'reset the position of the last line feed if the
'user has clear the chat window
if trim(text2) = vbnullstring then last_line_feed = 0
'if the user pressed enter...
if keyascii = 13 then
'get the new line of text
new_line = mid(text2, last_line_feed + 1)
's**e the position of the current linefeed
last_line_feed =
'send the new text across the socket
new_line
= " sent " & (lenb(new_line) / 2) & " bytes "
end if
end sub
text2_keypress 所做的工作就是首先檢測使用者敲擊的是否是回車鍵,如果是,則獲取使用者最新輸入的一行文字,然後呼叫winsock控制項的senddata方法將其傳送出去並更新狀態列顯示的連線狀態。
2.4接收遠端程式傳送的訊息
當遠端程式有訊息傳送過來時,系統會在固有的埠上提供緩衝並通知我們的程式,此時winsock控制項的dataarrival事件將被觸發,如下所示:
private sub winsock1_dataarrival(byval bytestotal as long)
'new_text is the text that has just arrived
'from across the socket
dim new_text as string
'get the new text
new_text
'show the new text
= new_text=
課程設計格式樣本
機械設計課程設計 說明書設計課題 專業班級 學生姓名 指導教師 設計時間 工程技術學院 呼倫貝爾學院工程技術學院 課程設計任務書 指導教師教研室主任 年月日注 本表下發學生乙份,指導教師乙份,欄目不夠時請另附頁。課程設計任務書裝訂於設計計算說明書封面之後,目錄頁之前。工程技術學院課程設計成績評定表 ...
課程設計說明書格式
中國礦業大學 煤礦圍岩控制及監測 課程設計 姓名學號 學院應用技術學院 專業設計題目綜採工作面控頂設計 指導教師職稱 二 一五年六月 目錄1 工作面條件 1 2 控頂設計 14 2.1 防漏 14 2.2 防壓 14 2.3防推 17 3 支架選型 22 3.1 支架引數要求 22 3.2 支架型號...
機械設計課程設計說明書 樣本
機械設計基礎課程設計說明書撰寫說明 一 課程設計說明書內容 封面 附件1 目錄 小標題 頁碼 摘要1 設計題目 包括1.機器的功能 工作條件及設計要求 2.原始資料 2 傳動系統方案的擬訂 對方案的簡要說明及傳動裝置簡圖 3 原動機的選擇 傳動系統的運動及動力引數 包括電動機的功率及轉速 型號 總傳...