999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

網絡聊天室設計方法探討

2013-09-11 17:35:09迪麗拜爾·艾海提
大陸橋視野·下 2013年7期

迪麗拜爾·艾海提

摘 要 本文通過網絡通訊協議、編程模式、聊天數據存儲方式三個方面,對網絡聊天室的設計方法進行探討,以期對學習和實現網絡聊天室的設計人員選擇何種方式實現聊天室功能提供參考依據和幫助。

關鍵詞 網絡通訊協議 套接字 網絡聊天室

網絡聊天室是網絡應用中最普遍的一種應用,網上聊天( 聊天室、QQ、ICQ 等) 就是給網絡用戶提供的一個方便快捷的交流平臺。因此,各大門戶網站和企業網站都提供了專門的聊天室網絡服務,例如,新浪聊天室、網易聊天室、搜狐聊天室, 也有一些專門的聊天室網站和企業, 如碧聊、騰訊QQ等。

本文通過網絡通訊協議、編程模式、聊天數據存儲方式3個方面,從技術角度,對網絡聊天室的設計方法進行探討,以期對學習和實現網絡聊天室的設計人員選擇何種方式實現聊天室功能提供參考依據和幫助。

一、網絡通訊協議

首先,我們分析網絡聊天室常用的網絡通訊協議。目前,聊天軟件使用最多的協議是UDP和TCP。UDP是不可靠傳輸服務,TCP是可靠傳輸服務。UDP就像點對點的數據傳輸一樣,發送者把數據打包,包上有收信者的地址和其他必要信息,至于收信者能不能收到,UDP協議并不保證。而TCP協議就像(實際他們是一個層次的網絡協議)是建立在UDP的基礎上,加入了校驗和重傳等復雜的機制,來保證數據可靠地傳達到收信者。一個是面向連接,一個無面向連接,各有用處。在一些數據傳輸率高的場合如視頻會議傾向于UDP,而對一些數據安全要求高的地方,如淘寶旺旺,要保留聊天信息作為交易的佐證,就傾向于TCP。在實際應用中,用于編寫聊天室的網絡編程語言(例如C#)里,已將TCP、UDP協議封裝為相應的類庫,提供了一系列方法供程序員進行操作。可以簡單地理解為,基于TCP的編程就好像通電話,一方撥通電話,另一方必須按下接聽鍵,兩者之間才能建立起有效的連接。而基于UDP的編程就好像是收音機廣播,一方只管播,對方誰在聽或者是否收到,發送消息方并不關心。常用聊天室(聊天工具)應用的網絡通訊協議列表,見表1:

表1 常用聊天室(聊天工具)應用的網絡通訊協議列表

實現基于UDP協議的C/S聊天室的編程代碼片段:

public partial class Form1 : Form

{

UdpClient uc; //聲明Udp客戶端

public Form1()

{

uc = new UdpClient(); //初始化

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

string temp = this.textBox1.Text; //保存TextBox文本

//將該文本轉化為字節數組

byte[] b = System.Text.Encoding.UTF8.GetBytes(temp);

//向本機的8888端口發送數據

uc.Send(b, b.Length,Dns.GetHostName(),8888);

}

}

實現基于TCP協議的C/S聊天室的編程代碼片段:

public partial class Form1 : Form

{

//聲明Tcp客戶端

private TcpClient tc;

//聲明網絡流

private NetworkStream ns;

public Form1()

{

CheckForIllegalCrossThreadCalls = false;

InitializeComponent();

}

private void button2_Click(object sender, EventArgs e)

{

//注冊本機8888端口

tc = new TcpClient(“localhost”,8888);

//實例化網絡流對象

ns = tc.GetStream();

string temp = this.textBox1.Text;

StreamWriter sw = new StreamWriter(ns);

StreamReader sr = new StreamReader(ns);

//將TextBox1的值傳給服務器端

sw.WriteLine(temp);

sw.Flush();

//接收服務器端回傳的字符串

string str = sr.ReadLine();

this.textBox2.Text = str;

sr.Close();

sw.Close();

}

}

二、編程模式

1.分析聊天室的編程模式。目前網絡編程的主要模式是:C/S 和 B/S兩種編程模式。C/S是美國Borland公司最早研發,B/S是美國微軟公司研發。

2.C/S(Client/Server即客戶機/服務器)模式。就是需要單獨開發客戶應用程序和服務器程序,充分利用客戶機和服務器兩端硬件環境的優勢,將任務合理分配到Client端和Server端來實現,降低了系統的通訊開銷。優勢是:應用服務器運行數據負荷較輕,數據的儲存管理功能較為透明。劣勢是:維護成本高且投資大,客戶端需要安裝專門的客戶端程序。

3.B/S(Browser/Server,即瀏覽器和服務器)模式。它是隨著Internet技術的興起,對C/S結構的一種變化或者改進的結構。在這種模式下,用戶工作界面是通過WWW瀏覽器來實現,極少部分事務邏輯在前端(Browser)實現,而主要事務邏輯在服務器端(Server)實現,這樣就大大簡化了客戶端電腦載荷,減輕了系統維護與升級的成本和工作量,降低了用戶的總體成本。優勢是:維護和升級方式簡單,成本低,客戶端不需要安裝專門的軟件,Web 瀏覽器就可以使用聊天服務。劣勢是:應用服務器運行數據負荷較重。見表2。

表2 C/S模式和B/S模式的區別

常見的C/S模式聊天室,主要是基于套接字(Socket)實現的,而Socket有兩種主要的操作方式:面向連接的(TCP)和無面向連接的(UDP)。基于TCP的socket編程是采用的流式套接字(SOCK_STREAM),而基于UDP采用的數據報套接字(SOCK_DGRAM)。下面以一個基于UDP(面向無連接)的socket編程,說明C/S模式聊天室設計步驟:

第一,服務端程序的設計步驟。(1)創建套接字(soeket)。(2)將套接字綁定到一個本地地址和端口上(bind)。(3)等待接收數據(recvfrom)。(4)關閉套接字。

第二,客戶端的設計步驟。(1)創建套接字(socket)。(2)向服務器發送數據(sendto)。(3)關閉套接字。

B/S模式聊天室,應用程序存儲在服務器端,通過web服務器發布,客戶端通過web瀏覽器訪問。

三、聊天數據存儲方式

聊天室設計實現中,還有一個重點和難點問題,就是怎樣保存聊天內容,以及如何將聊天的信息及時快捷地在服務器和客戶之間進行傳遞和共享。目前聊天室的數據存儲方式主要有以下三種:

(1)利用 Application對象保存聊天內容。

(2)利用文本文件保存聊天內容。

(3)利用數據庫直接保存聊天內容。

第一種方式,就是不需要在外存儲器上存儲聊天數據,而是在服務器的內存中保留聊天信息,因為內存資源有限,需要設置聊天信息內容長度,以隊列方式即時更新數據,即內容超出長度,覆蓋舊信息。優勢是讀寫速度是三種存儲方式中最快,一般用于不需要登錄的聊天室,早期的聊天室用得較多,或開發簡易聊天室用于研究學習聊天室編程技術。

第二種方式,就是把聊天數據以文本文件形式保存在客戶端或服務器端,例如ini文件或log文件,為了提高信息訪問速度,可以按天為單位創建ini文件,保存聊天信息。該存儲方式的劣勢是查找和管理聊天信息比較繁瑣。

第三種方式,把聊天數據保存在數據庫中,可以充分利用數據庫管理系統管理數據的功能,加強了數據的管理。但是需要注意的是,聊天室的訪問量大,以及隨著歷史數據的累計,訪問數據庫的速度會成為瓶頸,因此需要做一些策略考慮。一般把聊天室的聊天數據分兩部分存儲,歷史數據采用數據庫存儲,并自動建表以天為單位,最新200條(或者根多)。聊天數據使用內存存儲,超過一定時間,例如30 min轉儲到相應的當天自動建的表中這樣可以有效地提高數據庫的讀寫速度,避免每次請求讀出所有數據。

四、結束語

網絡聊天室是信息交流平臺之一,除了基本聊天功能,已經朝著實用性的方向發展。例如:在線學習、名師(專家)在線輔導答疑、遠程培訓等,有針對性的實用聊天室,對聊天室的設計目的更加明確,設計人員可以根據用戶需求,參照上述內容分析,有針對地選擇合適的設計方法,這對設計實現網絡聊天室非常重要。

參考文獻

[1]梁偉.Visual C++網絡編程經典案例詳解.北京:清華大學出版社,第1版,2010.

[2]孫衛琴.Java網絡編程精解.北京:電子工業出版社,2007.

主站蜘蛛池模板: 人妻出轨无码中文一区二区| 无码久看视频| 中国国产高清免费AV片| 老色鬼久久亚洲AV综合| 亚洲—日韩aV在线| AV在线天堂进入| 91在线日韩在线播放| 日本欧美一二三区色视频| 国产91麻豆免费观看| 91黄色在线观看| 久久精品国产国语对白| 色综合狠狠操| 九九九久久国产精品| 亚洲三级a| 国产一级在线观看www色 | 无码中文AⅤ在线观看| 91人人妻人人做人人爽男同| 91精品专区国产盗摄| 国产成人区在线观看视频| 操国产美女| 91亚洲免费| 久久黄色免费电影| 天天躁狠狠躁| 成人国产免费| 国产成人久久777777| 精品午夜国产福利观看| 91福利在线观看视频| 日韩精品一区二区深田咏美| 欧美综合在线观看| 国产精品亚洲精品爽爽| 美女毛片在线| 黄色片中文字幕| 丝袜美女被出水视频一区| 欧美国产成人在线| 国产精品成人AⅤ在线一二三四| 日日拍夜夜操| 丁香婷婷激情网| 在线精品亚洲国产| 亚洲中文字幕23页在线| 在线亚洲精品自拍| 麻豆AV网站免费进入| 亚洲成人动漫在线| 亚洲欧美另类色图| 亚洲综合精品香蕉久久网| 日韩免费中文字幕| 夜精品a一区二区三区| 亚洲精品午夜天堂网页| 亚洲天堂区| 国产福利免费观看| 亚洲永久色| 思思99热精品在线| 久久无码免费束人妻| 国产二级毛片| 美女无遮挡拍拍拍免费视频| 亚洲欧美日韩色图| 99re精彩视频| 亚洲天堂久久新| 久久黄色视频影| 欧美天堂久久| 亚洲天堂精品在线| 3344在线观看无码| 97se亚洲综合| 欧美特黄一级大黄录像| 国产精品林美惠子在线观看| 欧美成人a∨视频免费观看| 久久久精品久久久久三级| 色悠久久久| 黄片一区二区三区| 国产美女无遮挡免费视频网站| 日韩中文精品亚洲第三区| 日本www色视频| 香蕉国产精品视频| 成人综合在线观看| 巨熟乳波霸若妻中文观看免费| 91视频区| 欧美第九页| 毛片一区二区在线看| 欧美激情福利| 男女性午夜福利网站| 久久中文无码精品| 国产在线观看人成激情视频| 免费99精品国产自在现线|