freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

it計(jì)算機(jī)]基于socket的局域網(wǎng)聊天室系統(tǒng)(編輯修改稿)

2024-12-23 23:05 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 主要組 件名 稱 及 用 途 如下: TeditedConnectionPort 選擇輸入本機(jī)的端口號(hào) edConnectionService 選擇輸入本機(jī)的名稱 edConnectionAddress 選擇輸入本機(jī)的 IP 地址 edConnectionHost 選擇輸入本機(jī)名 edScreenName 輸入用戶的昵稱 edPassword 輸入密碼 FontSize 用戶自定義字體的大小 TLabelLabel2 提示用戶輸入密碼 Label6 提示用戶輸入昵稱 Label4 提示用戶輸入聊天內(nèi)容 Label5 提示用戶可以自定義字體 Label7 提示用戶可以自 定義字體的大小 Label8 提示用戶可以自定義背景顏色 TRadioButtonrbtnConnectionPort 提示用戶選擇輸入本機(jī)的端口號(hào) rbtnConnectionService 提示用戶選擇輸入本機(jī)的名稱 rbtnConnectionAddress 提示用戶選擇輸入本機(jī)的 IP 地址 rbtnConnectionHost 提示用戶選擇輸入本機(jī)的主機(jī)名 rbtnClientNonBlocking 提示用戶選擇非阻塞方式 rbtnClientThreadBlocking提示用戶選擇阻塞方式 第 9頁(yè) 共 30頁(yè) 9 TButton btnClientOpen 連接服務(wù)器按鈕 btnClientClose 斷開連接按鈕 btnClearClientSocketLog 清除日志 btnSend 發(fā)送信息按鈕 TListBoxlstClientActivity 顯示用戶活動(dòng) lbUsers 顯示用戶名單 TRichEditredReceive 顯示聊天內(nèi)容 TCheckBoxcbAutoRefreshUserlist 自動(dòng)刷新用戶名單 TComboBoxfontname 用戶自定義字體的類型 TUpdownUpdown1 用戶自定義字體的大小 TColorBoxColorbox1 用戶自定義字體的顏色 Colorbox2 用戶自定義 redReceive 的背景顏色 TTcpClientTcpClient1 向服務(wù)器提出連接請(qǐng)求 TPageControlpcLearnSockets 分頁(yè)顯示登錄聊天界面 重要組件 TTcpClient 的使用 ( 1)在應(yīng)用程序的 FormClientMain 中放入 TTcpClient 控件。 ( 2)設(shè)定 TTcpClient 的一些屬性:先設(shè)定 NAME 屬性,以便在程序中訪問本控件。設(shè)定BlockMode 為 bmBlocking。把 Active 屬性設(shè)為 False。 ( 3)在要與服務(wù)器建立連接之前,讓用戶輸入或者選擇主機(jī)名或主機(jī) IP 地址。 ( 4)設(shè)置屬性 Active 的值為 True,或只調(diào)用方法 Open 來建立與服務(wù)器的連接。 ( 5)如果收到 onError 事件通知,并且 ErrorEvent 是 eeConnect 的話,說明連接出錯(cuò),可能是服務(wù)器未打開,或是服務(wù)器程序未運(yùn)行等原因??梢宰層脩?選擇重新連接或者進(jìn)行其它處理。 ( 6)如果收到 OnConnect 事件通知,說明已經(jīng)連接已經(jīng)成功建立,此時(shí)可以開始與服務(wù)器交換數(shù)據(jù),接受服務(wù)器提供的服務(wù)。 ( 7)要求的服務(wù)完成之后,可以設(shè)定屬性 Active 的值為 False,或者調(diào)用方法 Close 終止網(wǎng)絡(luò)連接。 ( 8)可以在 OnDisconnect 事件處理例程中加入對(duì)網(wǎng)絡(luò)連接斷開后的必要的處理。 ( 9)在交換數(shù)據(jù)的過程中,如果收到 onError 事件通知,應(yīng)該進(jìn)行處理,對(duì)于嚴(yán)重的網(wǎng)絡(luò)錯(cuò)誤,應(yīng)該關(guān)閉網(wǎng)絡(luò)連接。 注冊(cè)模塊窗體設(shè)計(jì) 創(chuàng)建應(yīng)用程序 建立一個(gè)新的 Application,修改 Form1 的名字為 Formregister, Caption 屬性為 ―注冊(cè) ‖。 添加所需要的組件,使用了 2 個(gè) TButton 組件, 3 個(gè) TEdit 組件, 3 個(gè) TLable 組件 。 注冊(cè)模塊實(shí)現(xiàn) 當(dāng)客戶端發(fā)送注冊(cè)用戶的昵稱和密碼到服務(wù)器時(shí),在服務(wù)器端匹配后檢測(cè)用戶注冊(cè)的昵稱是否在數(shù)據(jù)庫(kù)中已經(jīng)有人注冊(cè)了。在 chatclient 數(shù)據(jù)庫(kù)表 中昵稱是關(guān)鍵值,是唯一的,不能重名。如果有重名,服務(wù)器端會(huì)向客戶端發(fā)送提示信息,客戶端接收后要換昵稱重新注冊(cè)。 登錄模塊實(shí)現(xiàn) ( 1)在用戶登錄模塊,用戶必須正確填寫正確的本機(jī)地址、端口號(hào)和昵稱等內(nèi)容,才能給予登錄。如果所填信息有錯(cuò)誤,會(huì)提示填寫正確信息。 第 10頁(yè) 共 30頁(yè) 10 procedure (Sender: TObject)。 //用戶單擊 ―連接 ‖按鈕 begin if then 。 if (=’’) and (=’’) then begin MessageBox(,’ 請(qǐng)輸入服務(wù)器的正確端口號(hào)或服務(wù) .’,’信息 ’,MB_OK)。 Exit。 end。 if (=’’) and (=’’) then begin MessageBox(,’請(qǐng)輸入服務(wù)器的正確 IP 地址或名稱 .’,’信息 ’,MB_OK)。 Exit。 end。 ( 2)在這里加了一段代碼以顯示主機(jī)名和主機(jī)的 IP 地址: procedure (Sender: TObject)。 var tp:ttcpclient。 strname,straddr:string。 I:Integer。 begin counter:=0。 tp:=(self)。 。 。 strname:=。 straddr:=。 :=’聊天室客戶端 ’+’ 您的主機(jī)名 :’+strname+’ IP:’+straddr。 。 for i := 0 to do ([i])。 end。 用戶在執(zhí)行連接和斷開任務(wù)時(shí),在登錄界面的右側(cè)有個(gè)用戶活動(dòng)記錄欄,記錄了所有信息。如果信息已經(jīng)滿屏,可以點(diǎn)擊清除日志按鈕來清除日志。 主聊天模塊實(shí)現(xiàn) 與大多數(shù)聊天模塊類似 ,我把主聊天模塊分成三大塊 :顯示區(qū)、用戶發(fā)言區(qū) 、用戶列表區(qū)。 用戶發(fā)言區(qū) 專門用來處理用戶所輸入的發(fā)言等??梢詫?duì)發(fā)言的字體大小和顏色進(jìn)行更改。 對(duì)于用戶對(duì)象的選取,用戶只需在用戶列表中選取你要發(fā)言的對(duì)象即可,用戶發(fā)言后直接點(diǎn)擊發(fā)送按鈕。 procedure (Sender: TObject)。 //當(dāng)聊天信息輸入框接受用戶輸入時(shí) ,按發(fā)送 var m:tmblock。 WriteText:string。 Receivers:TStringList。 I:Integer。 begin if(upperCase(Copy (,1,6))=’SNAME=’) then //如果是更變昵稱命令 begin WriteText:=。 第 11頁(yè) 共 30頁(yè) 11 :=Copy(,7,Length()6)。 。 end else if (Copy(,1,1)=’’) then WriteText:=’’ else if (Copy(,1,1)=’?’) then WriteText:=’?’ Else //表明信息類型為一般聊天消息 begin //將其轉(zhuǎn)變?yōu)?發(fā)送者 接收者 信息 格式 Receivers:=。 for I:=0 to do begin if [I] then ([I])。 end。 WriteText:=’’++’’+’’++’’+’’+t+1310’’。 :=+’對(duì) ’++’說: ’+。 。 end。 顯示區(qū) 用戶顯示頁(yè)面專門用來顯示聊天內(nèi)容,也可以對(duì)其改變背景顏色。 用戶列表區(qū) procedure (Sender: TObject。 Socket: TCustomWinSocket)。 //當(dāng)從服務(wù)器端收到信息 type PrevUser=record User:string。 Selected:Boolean。 end。 PrevUserList=array of PrevUser。 var ReadText:string。 Temp:PrevUserList。 I,J:Integer。 begin ReadText:=。 (’Client:Read’+FormatDateTime(StatusDateTimeFormat,Now))。 if (Copy(ReadText,1,1)=’’) then //表明服務(wù)器端送來的是用戶的名單 begin SetLength(Temp,)。 for I:=0 to do begin Temp[I].User:=[I]。 Temp[I].Selected:=[I]。 end。 這樣用戶名就顯示在列表中 ,并且當(dāng)用戶點(diǎn)擊時(shí)能使該用戶名成為發(fā)言的對(duì)象。 第 4 章 客戶端系統(tǒng)的運(yùn)行和軟件測(cè)試 第 12頁(yè) 共 30頁(yè) 12 客戶端登錄模塊的運(yùn)行 點(diǎn)擊 Unit_Client_Main 應(yīng) 用程序,進(jìn)入客戶端,等待服務(wù)器連接(服務(wù)器端已經(jīng)運(yùn)行成功),然后注冊(cè)。 正 確 填 入 端口 號(hào) 和 IP 地 址, 請(qǐng) 求 連接 。 然 后填 寫 昵稱 和 密 碼登 錄 聊天室。 聊天模塊運(yùn)行結(jié)果 這樣就可以進(jìn)入聊天室,可以進(jìn)行聊天了 。 軟件功能測(cè)試 我們考慮從以下幾個(gè)方面來考量其可靠性,可用性及容錯(cuò)性。 可靠性 考慮到具體所使用的網(wǎng)絡(luò)性能有所不同,為了考察此軟件在惡劣的網(wǎng)絡(luò)環(huán)境下使用的性能。我們使用壓力測(cè)試 工具 web spress在本機(jī)來模擬一個(gè)真實(shí)的網(wǎng)絡(luò)情況,在 web spress中開啟那些使用 socket 通信的應(yīng)用,如 FTP,POP3,HTTP 等,可以觀察到,隨著壓力的加大,網(wǎng)絡(luò)負(fù)荷的加重,我們的軟件發(fā)送和接受信息的速度并沒有受到明顯的影響。 可用性 考慮到不同的客戶機(jī)和服務(wù)器平臺(tái)所提供的計(jì)算能力不同,相應(yīng)地,我們的軟件在不同的硬件平臺(tái)上的表現(xiàn)也可能隨之出現(xiàn)差異。我們?cè)跍y(cè)試中人為地制造測(cè)試平臺(tái)工作在處理器、存儲(chǔ)器和 IO工作在重負(fù)荷下的情況,分別采用程序編譯、拷貝大尺寸的文件等方法造成 CPU,內(nèi)存,磁盤等設(shè)備的資源緊張。從測(cè)試中我們觀察到,雖然軟件的響應(yīng)時(shí)間有所增加,但從總體上來看,軟件性能的下降曲線較系統(tǒng)可用資源的下降曲線平緩。 容錯(cuò)性 為了驗(yàn)證軟件的容錯(cuò)性能,我們讓一位從未使用過此軟件的用戶來對(duì)此軟件進(jìn)行操作測(cè)試,在使用過程中,用戶的所有錯(cuò)誤操作均被軟件所截獲,并發(fā)出錯(cuò)誤信息,提醒用戶改正。可以說,軟件具備了一定的容錯(cuò)性能。 測(cè)試結(jié)論與評(píng)價(jià) 第 13頁(yè) 共 30頁(yè) 13 至此,一個(gè)基于 TCP/IP 協(xié)議的聊天室就完成了。在局域網(wǎng)內(nèi)運(yùn)行該程序并進(jìn)行設(shè)置,即可自由的聊天了。 結(jié) 束 語: 在用 Delphi 制作基于 Socket的局域網(wǎng)聊天室時(shí),我們一般不需要直接進(jìn)行套
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1