【正文】
借此向我向?qū)煴硎疚易钫\(chéng)摯的感謝和祝福。Socket編程[J].引進(jìn)與咨詢,2000。[6][J].滄州師范??茖W(xué)校學(xué)報(bào)2004。[2][M].北京:清華大學(xué)出版社,2003。聊天室的制作是件煩瑣而有挑戰(zhàn)性的工作,涉及面廣,與實(shí)踐教學(xué)環(huán)節(jié)密不可分,與課程內(nèi)容密切相關(guān),要多參考用其他語(yǔ)言是如何制作聊天室的,多搜集一點(diǎn)網(wǎng)上的資料。當(dāng)然,由于時(shí)間緊迫,所設(shè)計(jì)的軟件難免有不足之處,敬請(qǐng)各位評(píng)委老師指導(dǎo)。216。216。設(shè)計(jì)期間有許多的感觸、想法、經(jīng)驗(yàn),教訓(xùn),對(duì)以后的學(xué)習(xí)、工作有很大的益處。其功能基本符合用戶需求。(2)客戶端能夠連接到服務(wù)器,并能夠進(jìn)行注冊(cè)和登錄(3)在有新用戶登錄時(shí),用戶列表動(dòng)態(tài)刷新(4)聊天功能可以正常進(jìn)行(5)服務(wù)器系統(tǒng)信息欄記錄了用戶的注冊(cè)、登錄、下線等相關(guān)信息 測(cè)試結(jié)論以上的測(cè)試案例是單獨(dú)進(jìn)行測(cè)試的,還需要進(jìn)一步的交叉案例測(cè)試。(4)注冊(cè)若干個(gè)用戶進(jìn)行登錄,看服務(wù)器和客戶端的在線戶列表是否刷新和同步。表示有登陸信息。表示從用戶列表中刪除下線的用戶;當(dāng)有39。 end客戶端與服務(wù)器進(jìn)行通信時(shí)同樣是通過(guò)附加不同的特殊字符串來(lái)讓服務(wù)器區(qū)分登錄、注冊(cè)、下線等信息,當(dāng)有39。)。39。 (39。,tmptext)0 then // 當(dāng)有39。 //注冊(cè)成功后提示 end。 (39。新用戶:[39。用戶名已經(jīng)有人用了,請(qǐng)檢查后重新注冊(cè)。 chattext:=copy(tmptext,signpos+6,length(tmptext)6length(member))。字符串表示注冊(cè)信息 begin signpos:=pos(39。 endelse if pos(39。 sleep(300)。 [i].SendText(tmptext+39。 if counter0 then begin for i:=0 to counter1 do begin [counter].SendText(chatname[i]+39。+tmptext+39。39。password39。 (tmptext)。,tmptext)0 then // 當(dāng)有39。39。以上是聊天部分的代碼,服務(wù)器通過(guò)特殊的字符串來(lái)區(qū)分公聊和私聊,當(dāng)有39。 end。對(duì)你說(shuō):39。,tmptext)+2,length(tmptext)pos(39。$$39。39。字符串時(shí)表示私聊 begin tmptext := copy(tmptext,1,length(tmptext)6)。%amp。%amp。end。Socket: TCustomWinSocket)。)。]39。示意圖如圖12:圖12 服務(wù)器界面設(shè)計(jì)4系統(tǒng)實(shí)現(xiàn)及核心代碼 網(wǎng)絡(luò)通信核心代碼begin if not then begin :=true??傮w思想是上下,下分兩欄,使用框架做布局,此方法可以使整個(gè)系統(tǒng)更加符合信息空間的信息存儲(chǔ),運(yùn)行速度更快,信息層次更加清晰,用戶操作則更方便,更有條理。服務(wù)器同樣設(shè)計(jì)一個(gè)可以動(dòng)態(tài)刷新的在線用戶列表,管理員可以看到當(dāng)前的用戶在線情況。用戶列表只是顯示在線用戶,當(dāng)有新用戶上線時(shí)用戶列表動(dòng)態(tài)刷新??蛻舳说墓δ苣K如圖3所示;圖3 客戶端功能模塊圖服務(wù)器主要功能有消息處理、系統(tǒng)消息、在線用戶列表、監(jiān)聽(tīng)狀態(tài)控制,如圖4所示:圖4 服務(wù)器功能模塊圖 客戶端設(shè)計(jì)客戶端設(shè)計(jì)時(shí)以用戶使用為出發(fā)點(diǎn),功能分登錄、注冊(cè)、輸入服務(wù)器IP、聊天、用戶列表和關(guān)于這幾個(gè)詳細(xì)模塊。根據(jù)局域網(wǎng)聊天程序系統(tǒng)的一般要求,通過(guò)對(duì)整個(gè)系統(tǒng)運(yùn)行過(guò)程和數(shù)據(jù)流程分析,得出本系統(tǒng)的實(shí)體表:用戶基本信息表。網(wǎng)絡(luò)中各個(gè)機(jī)器的資源是不平等的,網(wǎng)絡(luò)的真正目的就是共享這些不均等資源源,非對(duì)等相互作用特點(diǎn)也正好體現(xiàn)和適應(yīng)了客觀現(xiàn)實(shí)中資源的不均等現(xiàn)象。 軟件環(huán)境:操作系統(tǒng):Microsoft Windows XP Professional應(yīng)用軟件:Delphi + Database Desktop 系統(tǒng)開(kāi)發(fā)環(huán)境Delphi是全新的可視化編程環(huán)境,為我們提供了一種方便、快捷的Windows應(yīng)用程序開(kāi)發(fā)工具。216。216。 客戶端使用簡(jiǎn)便,服務(wù)器端運(yùn)行穩(wěn)定。用戶容易使用,便于管理。有連接的話,在客戶方,通過(guò)socket()函數(shù)建立流式套接字s,此時(shí)在服務(wù)器方,建立連接,通過(guò)accept()返回,得到新的套接字ns,客戶方通過(guò)connect()將套接字s與遠(yuǎn)程地址連接,此時(shí)服務(wù)器方/客戶方在ns/s上讀/寫數(shù)據(jù),直到交換完成。在Delphi中,其底層的Socket也應(yīng)該是Windows的Socket。Socket可以是基于TCP的,也可以是基于UDP,同時(shí)Socket甚至建立在其他的協(xié)議,比如IPX/SPX,DECNet等。套接字屏蔽了底層通信軟件和具體操作系統(tǒng)的差異,使得任何兩臺(tái)安裝了TCP協(xié)議軟件和實(shí)現(xiàn)了套接字規(guī)范的計(jì)算機(jī)之間的通信成為可能。只要系統(tǒng)運(yùn)行,該進(jìn)程一直存在,直到正常終止或者強(qiáng)迫終止。(3)請(qǐng)求結(jié)束后關(guān)閉通信通道并終止。服務(wù)完成后,關(guān)閉此新進(jìn)程與客戶的通信鏈路,并終止。(2)等待客戶請(qǐng)求到達(dá)該端口。它是軟件系統(tǒng)體系結(jié)構(gòu),通過(guò)它可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到Client端和Server端來(lái)實(shí)現(xiàn),降低了系統(tǒng)的通訊開(kāi)銷。編程時(shí),編程界面有兩種形式:一、是由內(nèi)核心直接提供的系統(tǒng)調(diào)用;二、使用以庫(kù)函數(shù)方式提供的各種函數(shù)。它具有信息收發(fā)速度快,保密性好,占用網(wǎng)絡(luò)帶寬資源低,占用服務(wù)器吞吐能力低,易于編程實(shí)現(xiàn)等優(yōu)點(diǎn)。為了解決上述矛盾,前輩們提出了許多方法。出于高效、快速地處理各種事務(wù)的目的,越來(lái)越多的企業(yè)和單位在其內(nèi)部使用局域網(wǎng)來(lái)進(jìn)行工作和交流。無(wú)論近在咫尺,還是遠(yuǎn)隔重洋,也只是在鍵盤和鼠標(biāo)之間就可以解決問(wèn)題。 C/S