TCPIP課程設計答辯實用教案_第1頁
TCPIP課程設計答辯實用教案_第2頁
TCPIP課程設計答辯實用教案_第3頁
TCPIP課程設計答辯實用教案_第4頁
TCPIP課程設計答辯實用教案_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、環(huán)境(hunjng)介紹開發(fā)環(huán)境:Microsoft Visual Studio 2010編程語言:C#使用(shyng)技術:soket套接字編程,多線程第1頁/共18頁第一頁,共19頁。模塊(m kui)介紹客戶端功能:注冊新用戶登錄服務器;顯示當前服務器在線(zi xin)用戶;群聊;私聊;服務器功能: 創(chuàng)建新用戶;驗證客戶端登錄;實現(xiàn)客戶端消息的轉發(fā);第2頁/共18頁第二頁,共19頁。服務端一、項目中添加(tin ji)windows窗體,設計如下。1.添加(tin ji)listbox控件顯示連接的客戶端名稱。2.添加(tin ji)Txtbox控件控制要監(jiān)聽的端口。第3頁/共18頁

2、第三頁,共19頁。服務端二、服務端代碼編寫服務端要的作用是監(jiān)聽客戶端的連接請求(qngqi)并確認其請求(qngqi)。程序一開始便打開一個StartListening()線程。第4頁/共18頁第四頁,共19頁。當服務器端接收到一個來自客戶端的連接(linji)請求后,它就打開一個clientservice()線程來服務客戶端。當一個連接(linji)被建立后,每個客戶端就被賦予一個屬于它自己的套接字。同時,一個Client類的對象被建立。該對象包的一些相關信息,該信息被保存在一個數(shù)組列表中。Client代碼如下第5頁/共18頁第五頁,共19頁。程序的主體部分應是ServiceClient()

3、函數(shù)。 該函數(shù)是一個獨立的線程,其主要部分是一個while循環(huán)。在循環(huán)體內,程序處理各種客戶端命令。服務器端接收來自以ASCII碼給出的字符串,其中包含了一個“|”形式的分隔符。字符串中“|”以前的部分就是具體的命令,包括CONN、CHAT、PRIV、GONE四種類型。 CONN命令建立一個新的客戶端連接,將現(xiàn)有的用戶列表發(fā)送給新用戶并告知其他用戶有一個新用戶加入。CHAT命令將新的信息發(fā)送給所有用戶。PRIV命令將悄悄話發(fā)送給某個用戶。GONE命令從用戶列表中除去一個已離開的用戶并告知其他的用戶某某已經離開了。 同時(tngsh),GONE命令可以設置布爾型的變量alive為false從而結

4、束與客戶端連接的線程。ServiceClient()第6頁/共18頁第六頁,共19頁。Serviceclient()主要(zhyo)代碼:第7頁/共18頁第七頁,共19頁。第8頁/共18頁第八頁,共19頁。客戶端 這樣,服務器端程序就基本(jbn)完成了。接下來設計客戶端一、設計客戶端窗體往界面上添加一個ListBox控件(用于顯示(xinsh)用戶列表),一個RichTextBox控件(用于顯示(xinsh)聊天消息以及系統(tǒng)消息),一個TextBox控件(用于發(fā)送消息),一個CheckBox控件(確定是否為悄悄話),一個StatusBar控件以及四個Button控件(分別為“連接”、“斷開連

5、接”、“開始記錄”、“發(fā)送”)。各個控件的屬性設置可以參見源代碼中的具體設置,這里從略。界面設計好后的圖象如下: 第9頁/共18頁第九頁,共19頁。客戶端窗體如下(rxi):第10頁/共18頁第十頁,共19頁。 當客戶端試圖和服務器端進行連接時,一個連接必須(bx)建立而且得向服務器端進行注冊。creatConnection()函數(shù)運用一個TcpClient來和服務器端取得連接,同時創(chuàng)建一個NetworkStream來發(fā)送消息。還有,端口號和服務器端的是保持一致的。 creatConnection()函數(shù)如下:第11頁/共18頁第十一頁,共19頁。在和服務器端連接成功后,程序就用Storefo

6、rServer()()函數(shù)向服務器端發(fā)送一個CONN命令(mng lng)。該命令(mng lng)先是發(fā)送該用戶的名稱,然后從服務器端獲得其他所有用戶的列表。第12頁/共18頁第十二頁,共19頁。 之后,就是用戶之間的聊天了ReceiveChat()函數(shù)來完成。 該函數(shù)是一個獨立的線程,它處理所有用戶獲得的消息和用戶發(fā)送的消息。它主要(zhyo)處理了CHAT、PRIV、JOIN、GONE、QUIT等命令,處理的方法和服務器端的類似。 ReceiveChat()主要(zhyo)代碼第13頁/共18頁第十三頁,共19頁。Receivechat()主要代碼(di m)如下:第14頁/共18頁第十

7、四頁,共19頁。Receivechat()主要(zhyo)代碼:第15頁/共18頁第十五頁,共19頁。 通過以上的一些函數(shù)(hnsh),客戶端程序之間就可以進行自由地聊天了,各個用戶之間還可以互相發(fā)送悄悄話。所以程序已經實現(xiàn)了聊天室的基本功能了,不過最后各個用戶還要正常地退出,那就要用到QuitChat()函數(shù)(hnsh)了。第16頁/共18頁第十六頁,共19頁。程序(chngx)(chngx)編寫過程中遇到的困難:總結(zngji)如讓每個客戶端和服務端中間能夠獨立(dl)通訊,互不影響。解決:解決: 創(chuàng)建一個Client類包含客戶端成員的名稱,地址,通訊內容。每個客戶端都會實例化一個新的數(shù)組,并且調用新的線程。第17頁/共18頁第十七頁,共19頁。感謝您的觀看(gunkn)!第18頁/共18頁第十八頁,共19頁。NoImage內容(nirng)總結環(huán)境介紹。服務端要的作用是監(jiān)聽客戶端的連接請求并確認其請求。相關信息,該信息被保存在一個數(shù)組列表中。服務器端接收來自以ASCII碼給出的字符串,其中包含了一個“|”形式的分隔符。各個控件的屬性設置可

溫馨提示

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

最新文檔

評論

0/150

提交評論