午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

chat.asp聊天程序的編寫(xiě)方法

瀏覽:801日期:2022-06-05 14:09:56

可能朋友們已經(jīng)在一些雜志上看到過(guò) ASP 聊天程序的編寫(xiě)方法,但作者在這里自己寫(xiě)了一個(gè)更簡(jiǎn)單的程序,僅僅使用了一個(gè) .asp 文件。請(qǐng)將以下代碼剪貼到記事簿并保存為chat.asp。

< %@ Language=VBScript %>< %Response.Buffer=true " 設(shè)置輸出緩存,用于顯示不同頁(yè)面。On error resume next " 忽略程序出錯(cuò)部分If Request.ServerVariables("Request_Method")="GET" then" 判斷客戶(hù)是以什么方式請(qǐng)求 WEB 頁(yè)面"------------------------" 客戶(hù)登陸界面 "------------------------%>< form method="POST" action="chat.asp">< p>< input type="text" name="nick" size="20" value="nick">< br>< input type="submit" value=" 進(jìn)入聊天室 " name="B1">< p>< input type="hidden" name="log" size="20" value="1">< br>< /p>< /form>< %Response.End " 結(jié)束程序的處理ElseResponse.clear " 清空緩存中的內(nèi)容dim talkIf Request.Form("nick")<>"" then" 判斷客戶(hù)是是否在聊天界面中 Session("nick")=Request.Form("nick")End If"------------------------"客戶(hù)聊天界面 "------------------------%>< form method="POST" action="chat.asp" name=form1> < p>< %=Session("nick")%> 說(shuō)話(huà):< input type="text" name="talk" size="50">< br>< input type="submit" value=" 提交 " name="B1">< input type="reset" value=" 取消 " name="B2">< /p>< /form>< A HREF="/asptest/shusheng/chat.asp"> 離開(kāi) < /a>< br>< br>< %If Request.Form("log")<>1 thenIf trim(Request.Form("talk"))="" then" 判斷用戶(hù)是否沒(méi)有輸入任何內(nèi)容 talk=Session("nick")&" 沉默是金。"Elsetalk=trim(Request.Form("talk"))" 去掉字符后的空格 End IfApplication.lockApplication("show")="< table border="0" cellpadding="0" cellspacing="0" width="85%" >< tr>< td width="100%" bgcolor="#C0C0C0">〈/td〉〈/tr〉< tr>< td width="100%">< font color="#0000FF"> 來(lái)自 "&Request.ServerVariables("remote_addr")&" 的 "&Session("nick")&time&" 說(shuō):< /font>"&talk&"〈/td〉〈/tr〉< tr>< td width="100%" bgcolor="#C0C0C0">〈/td〉〈/tr〉< /table>< br>"&Application("show")Application.UnLockResponse.Write Application("show")End IfEnd If%>

  

下面我們來(lái)對(duì)這個(gè)聊天室程序進(jìn)行逐步的分析。
   首先,由于聊天室的所有客戶(hù)都要能夠共享信息,所以不可避免的要用到具有應(yīng)用程序級(jí)變量的對(duì)象 Application,這是建立 Chat 程序的關(guān)鍵所在,所有的談話(huà)數(shù)據(jù)都存放在一個(gè)應(yīng)用程序級(jí)變量中,以便讓所有的客戶(hù)讀取。我們可以用所學(xué)過(guò)的 request 對(duì)象獲取客戶(hù)所輸入的談話(huà),并保存在變量 talk 中 , 然后將 talk 的值存入應(yīng)用程序級(jí)變量 show 中,如下 :

< % Application("show")=talk&Application("show") %>

   接下來(lái)要考慮的是當(dāng)不同的客戶(hù)同時(shí)向 Chat 應(yīng)用程序進(jìn)行操作的時(shí)候如何處理。這個(gè)問(wèn)題其實(shí)與在數(shù)據(jù)庫(kù)中的兩個(gè)用戶(hù)同時(shí)寫(xiě)入同一個(gè)記錄一樣,如果兩個(gè)用戶(hù)同時(shí)對(duì)同一個(gè)應(yīng)用程序級(jí)變量進(jìn)行寫(xiě)操作,則一個(gè)用戶(hù)所作的修改會(huì)被另一個(gè)用戶(hù)的操作所覆蓋,所以,如果對(duì) Appliation 對(duì)象數(shù)據(jù)的并發(fā)訪問(wèn)不采取一定措施,則會(huì)導(dǎo)致當(dāng)兩個(gè)用戶(hù)試圖同時(shí)對(duì) Asp 聊天室應(yīng)用程序提交時(shí),一個(gè)用戶(hù)的提交內(nèi)容會(huì)被另一個(gè)用戶(hù)的提交內(nèi)容所覆蓋,在被參加到會(huì)話(huà)中的任何人看到之前就消失了。為了避免這類(lèi)問(wèn)題的出現(xiàn),我們需要使用 Application 對(duì)象的 Lock 屬性來(lái)約束只允許當(dāng)前的用戶(hù)編輯或增加 Application 對(duì)象的屬性,這樣當(dāng)用戶(hù)開(kāi)始修改應(yīng)用程序級(jí)變量開(kāi)始,到 Application 對(duì)象被顯式地 Unlocked 為止,Application 對(duì)象的屬性只能被該用戶(hù)編輯,如果此時(shí)有其他用戶(hù)請(qǐng)求編輯 Application 對(duì)象,則這些用戶(hù)要排隊(duì)等待,知道應(yīng)用程序被 Unlock 為止。如下所示 :
Application.lock
Application("show")=talk&Application("show")
Application.UnLock
   現(xiàn)在整個(gè)程序的核心部分你已經(jīng)了解了,下面考慮如何保存客戶(hù)信息,這里我們要用到一個(gè)會(huì)話(huà)級(jí)變量,即將客戶(hù)的 nick 保存在 Session 中。如:

Session("nick")=Request.Form("nick")
   最后,我們要考慮的是如何僅在一個(gè) .asp 文件中處理各種事件 , 如 : 客戶(hù)登陸界面、客戶(hù)聊天界面。由于客戶(hù)第一次請(qǐng)求 .asp 文件時(shí),采用的是簡(jiǎn)單的 HTTP GET 方式,但是當(dāng)客戶(hù)向頁(yè)面上的表單字段中增加的數(shù)據(jù)并向自身提交表單后,.asp 文件會(huì)再次被請(qǐng)求,不過(guò)這次數(shù)據(jù)是經(jīng)過(guò) HTTP POST 方式進(jìn)行傳遞的。文件被請(qǐng)求的方式可以用兩種方法來(lái)確定。一是測(cè)試 Request.Form 集合是否包含成員,若沒(méi)有,則表明沒(méi)有發(fā)送給表單處理的數(shù)據(jù)。二是使用 Request.ServerVariables("Request_Method") 變量。如果表單是通過(guò) HTTP GET 方式被請(qǐng)求的,則這個(gè)變量會(huì)返回“GET”,如果表單被提交處理則返回“POST”。由于后一種方法對(duì)于確定文件的請(qǐng)求方式更直接,所以我們使用如下代碼進(jìn)行判斷 :
if Request.ServerVariables("Request_Method")="GET" then
   由于我們?cè)O(shè)置了 ASP 緩存,所以當(dāng)程序判斷頁(yè)面請(qǐng)求方式為 GET 時(shí),程序運(yùn)行 Response.End,來(lái)結(jié)束后面的所有操作,否則則運(yùn)行 Response.clear, 清空緩存中已有的內(nèi)容,并繼續(xù)程序的運(yùn)行。這樣我們就得以用同一個(gè) .asp 文件根據(jù)不同情況給客戶(hù)顯示不同的界面。
   好了,我已經(jīng)將這個(gè) ASP Chat 程序的核心部分告訴大家了,剩下的一些細(xì)節(jié)性問(wèn)題請(qǐng)各位自己讀程序吧,其實(shí)這個(gè)程序還存在很多不足之處,最大的毛病是我沒(méi)有寫(xiě)自動(dòng)刷新的功能,因此如果你在Chat 中不說(shuō)話(huà),那也就看不到其他客戶(hù)所說(shuō)的話(huà)了。

Chat 在 Internet 中的魅力大家是知道的,其實(shí),用 ASP 也完全能做到同 irc 類(lèi)似的強(qiáng)大功能,當(dāng)然這就需要寫(xiě)更多的代碼,如果大家有興趣的話(huà)可以更深入的進(jìn)行學(xué)習(xí),和大家交流經(jīng)驗(yàn)成果。

標(biāo)簽: ASP
相關(guān)文章:
主站蜘蛛池模板: 狠狠操你 | 一级欧美视频 | 日韩特黄 | 夜夜cao| 日本欧美在线观看视频 | 成人黄色免费观看 | 色视频在线观看 | 中文av在线播放 | 欧美在线网站 | 成人18视频在线观看 | 精品久久久久久久久久久久久久久 | 日韩一区二区三区在线 | 亚洲一区二区三区成人 | 亚洲小视频在线播放 | 欧美一区二区在线播放 | 国产成年人在线观看 | 久久午夜国产精品 | 午夜精品在线播放 | 国产综合图片 | 日本不卡在线观看 | 在线免费看黄色片 | 久久精品无码一区二区三区 | 国产高清在线免费观看 | 亚洲一区日韩 | 日本黄色不卡视频 | 香蕉毛片 | 亚洲一级精品 | 亚洲视频免费在线观看 | 欧美a在线| 亚洲精品一二三区 | 成人免费网站在线观看 | 992tv在线观看 | 日韩av免费网站 | 精品国产精品国产偷麻豆 | 婷婷爱五月 | aaa亚洲精品 | 国产精品第六页 | 亚洲热热| 国产影视一区 | 成人涩涩小片视频日本 | 日韩欧美一区二区三区四区 |