資源描述:
《tcpip課程設計報告-聊天工具》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、TCP/IP技術(shù)課程設計報告一、需求分析:1.1功能要求本實驗通過簡單的網(wǎng)絡編程可以實現(xiàn)簡單的通信功能,兩個用戶的通信和多個用戶的通信,通過服務器轉(zhuǎn)發(fā)。服務器:用戶信息注冊注冊過的用戶登錄顯示在線的好友④聊天⑤退出系統(tǒng)客戶端:顯示服務器的消息顯示聊天對等端的信息對話信息1.2數(shù)據(jù)要求服務器:對客戶端所注冊的密碼和用戶名存儲在文件中,所存儲的數(shù)據(jù)不能改變。將登錄的人員的信息動態(tài)保存在服務器端的一個結(jié)構(gòu)體數(shù)組中??蛻舳耍簩?shù)據(jù)進行讀寫,客戶端按照要求輸入信息。將注冊信息寫入服務器的文件中存儲,從服務器端
2、讀出登錄驗證反饋的信息,可以觀察數(shù)據(jù)的存入狀況。1.3潛在需求此系統(tǒng)在功能上還是有一定的不足的,還有一定的改善空間。如:實現(xiàn)離線消息的發(fā)送、添加圖形化界面的實現(xiàn)、系統(tǒng)增加刪除好友、實現(xiàn)用戶修改信息以及使對話模式更加人性化。1.4系統(tǒng)邏輯模型:框架圖:系統(tǒng)通信顯示在線好友用戶退出登陸用戶信息注冊用戶信息用戶在線聊天用戶不在線客戶B客戶A服務器客戶B客戶A通信圖:服務器發(fā)送轉(zhuǎn)發(fā)二、設計思想與過程:此實驗是通過UDP實現(xiàn)簡單網(wǎng)絡通信,客戶A、B相互通信要經(jīng)過服務器端轉(zhuǎn)發(fā)。服務器端接收客戶端發(fā)來的注冊信息,
3、將信息中的用戶名和密碼存儲到服務器端的文件中。當有客戶登錄系統(tǒng),服務器端用結(jié)構(gòu)體數(shù)組動態(tài)保存當時系統(tǒng)在線的用戶名和IP地址。當兩用戶進行通信時,服務器將保存在動態(tài)數(shù)組里的IP地址取出用于轉(zhuǎn)發(fā)。當接收方收到信息后,從接受狀態(tài)轉(zhuǎn)化成發(fā)送狀態(tài),可以回發(fā)信息,服務器用同樣的方法轉(zhuǎn)發(fā)。當客戶端要求獲取在線好友信息(本系統(tǒng)默認登錄的用戶都是好友),服務器把在線的動態(tài)結(jié)構(gòu)體數(shù)組發(fā)給提出要求的用戶,用戶讀取并顯示信息。三、程序概貌:注冊界面:登陸界面:聊天界面:實現(xiàn)多人通信:獲取在線好友:服務器端的顯示:四、本程序
4、的亮點及亮點所帶來的優(yōu)越性:本次課程設計實現(xiàn)了基本的通信要求,但程序的健壯性有待提高。設計中沒有使用任何線程或進程,用標志位來循環(huán)切換發(fā)送狀態(tài)和接收狀態(tài)。實現(xiàn)了客戶間的通信,完成了聊天的基本功能,可以注冊用戶信息并登錄,更新好友列表,發(fā)送在線消息等。用戶信息存儲于服務器端的文件中,即使是服務器端斷開后,下次開啟的時候,客戶端可以直接登錄,以往的信息不回丟失??梢詫崿F(xiàn)和任意一個在線用戶通信的功能以及一對多的通信。五、對TCP/IP套接字編程的體會:通過本次課程設計,使我了解到了網(wǎng)絡通信的一般流程,并掌
5、握了基本的編寫網(wǎng)絡通信程序的方法。在實驗過程中寫獲取在線好友信息時,保存的數(shù)組里沒有在線人數(shù),所以在客戶端用for循環(huán)的時候不知道具體循環(huán)多少次。因為用了一個比較大的數(shù)浪費了循環(huán)時間和資源,這一點有待改進。源代碼剛寫成時調(diào)試時出現(xiàn)過“段錯誤”,經(jīng)上網(wǎng)查找資料知道段錯誤經(jīng)常是伴隨著指針出現(xiàn)的,故在程序中重點查找指針,終于發(fā)現(xiàn)錯誤所在。通過此次課程設計使我了解到UDP通信與我們熟悉的TCP通信有一定程度的不同。它的發(fā)送與接收使用的是通過sendto、recvfrom函數(shù)實現(xiàn)。區(qū)分了它們與send和rec
6、v函數(shù)的具體應用和區(qū)別。感覺這是一次經(jīng)驗的積累,更加深入的了解需要更加努力的學習。在調(diào)試的過程中出現(xiàn)各種各樣的錯誤,但和同組同學耐心調(diào)試后還是可以解決的。團隊精神和查閱資料這兩者在課程設計中顯得尤為重要。六、本游戲主要程序如下:程序源碼保存在089074349+zhuxiaomin+089074330+liuweinan.zip中