一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP教程 - chat.asp聊天程序的編寫方法

chat.asp聊天程序的編寫方法

2019-06-22 16:28lijiao ASP教程

這篇文章主要介紹了chat.asp聊天程序的編寫方法,非常簡單的 ASP WEB 聊天室程序,你會發(fā)覺寫聊天室原來是一件這么容易、輕松的事,感興趣的小伙伴們可以參考一下

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

< %@ Language=VBScript %>

< %

Response.Buffer=true ' 設置輸出緩存,用于顯示不同頁面。

On error resume next ' 忽略程序出錯部分

If Request.ServerVariables("Request_Method")="GET" then

' 判斷客戶是以什么方式請求 WEB 頁面

'------------------------
' 客戶登陸界面 
'------------------------
%>

< form method="POST" action="chat.asp">< p>

< input type="text" name="nick" size="20" value="nick" style="background-color: rgb(192,192,192)">< br>

< input type="submit" value=" 進入聊天室 " name="B1" style="color: rgb(255,255,0); font-size: 9pt; background-color: rgb(0,128,128)">

< p>< input type="hidden" name="log" size="20" value="1">< br>< /p>

< /form>

< %

Response.End ' 結束程序的處理

Else

Response.clear ' 清空緩存中的內(nèi)容

dim talk

If Request.Form("nick")<>"" then

' 判斷客戶是是否在聊天界面中 

Session("nick")=Request.Form("nick")

End If
'------------------------'
客戶聊天界面 
'------------------------
%>

< form method="POST" action="chat.asp" name=form1> < p>< %=Session("nick")%> 說話:< 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"> 離開 < /a>< br>< br>

< %

If Request.Form("log")<>1 then

If trim(Request.Form("talk"))="" then

' 判斷用戶是否沒有輸入任何內(nèi)容 

talk=Session("nick")&" 沉默是金。"

Else

talk=trim(Request.Form("talk"))
' 去掉字符后的空格 
End If

Application.lock
Application("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'> 來自 "&Request.ServerVariables("remote_addr")&" 的 "&Session("nick")&time&" 說:< /font>"&talk&"〈/td〉〈/tr〉< tr>< td width='100%' bgcolor='#C0C0C0'>〈/td〉〈/tr〉< /table>< br>"&Application("show")
Application.UnLock

Response.Write Application("show")

End If

End If
%>

   chat.asp聊天程序的編寫方法

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

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

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

   現(xiàn)在整個程序的核心部分你已經(jīng)了解了,下面考慮如何保存客戶信息,這里我們要用到一個會話級變量,即將客戶的 nick 保存在 Session 中。如:

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

Chat 在 Internet 中的魅力大家是知道的,其實,用 ASP 也完全能做到同 irc 類似的強大功能,當然這就需要寫更多的代碼,如果大家有興趣的話可以更深入的進行學習,和大家交流經(jīng)驗成果。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色老板在线 | 9966国产精品视频 | 精品国产乱码久久久久久免费流畅 | 日本高清在线观看天码888 | 欧美日韩亚洲高清不卡一区二区三区 | 国产99久久久国产精品成人 | 亚洲免费在线视频 | 午夜久久免影院欧洲 | 四虎影院在线免费观看视频 | 热久久最新 | 91精品国产品国语在线不卡 | 美女扒开奶罩让男人吃奶 | 国产清纯91天堂在线观看 | 波多野结衣一区 | 福利一区三区 | 成人久久18免费网站 | 校花被老头夺去第一次动图 | 天天爽天天干天天操 | 亚洲国产在线播放在线 | 美女无内裤下部黄 | 亚洲天堂影院 | 色琪琪久久se色 | 国产精品一级香蕉一区 | 欧美专区综合 | 国产精品视频免费观看 | 日本全黄三级在线观看 | 精品日韩欧美一区二区三区 | 无码毛片内射白浆视频 | 丝袜老师好湿好紧我要进去了 | 日本在线看免费 | 国产90后美女露脸在线观看 | 国产成人精品一区二区阿娇陈冠希 | 亚洲 欧美 日本 国产 高清 | 亚洲精品一区波多野结衣 | 四虎影院永久网站 | 午夜精品在线视频 | 啊啊啊好爽在线观看 | 我与肥熟老妇的性事 | 久久精品国产色蜜蜜麻豆国语版 | 99精品国产在现线免费 | 欧美1|