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

正文內(nèi)容

基于tcp協(xié)議的簡單即時(shí)通信軟件的設(shè)計(jì)與實(shí)現(xiàn)-文庫吧資料

2025-06-06 12:00本頁面
  

【正文】 { region 此處寫入返回注冊失敗的代碼 Socket sc = (Socket)alSock[(uc, 0)]。 + Accounts + 39。對反串行化后的信息進(jìn)行處理,通過info參數(shù)辨認(rèn)客戶端行為(注冊或者登錄),對注冊的信息進(jìn)行數(shù)據(jù)庫查詢,注冊信息可插入,則將用戶信息插入數(shù)據(jù)庫,否則返回客戶端“注冊出錯(cuò)”的信息: region 處理用戶注冊信息 if (info==0)//分辨出用戶發(fā)送的是注冊信息 { string Accounts = 。 UMessage umessage = (UMessage)(new MemoryStream(chat))。 byte[] chat = new byte[rect]。 byte[] data = new byte[2048]。 (uc)。 alSock = new ArrayList()。 ((EndPoint)ServerIPEP)。 ServerIPEP = new IPEndPoint(, port)。如下圖:這里顯示已連入的連接圖4 服務(wù)器端界面 同步套接字網(wǎng)絡(luò)監(jiān)聽基于同步套接字的網(wǎng)絡(luò)監(jiān)聽器對服務(wù)器來說并不是最好的解決方案,但是仍然可行并且實(shí)現(xiàn)簡單。 },主程序可以更方便地實(shí)現(xiàn)數(shù)據(jù)庫連接操作,對數(shù)據(jù)庫進(jìn)行讀寫和更新,在此不再詳述。 } ()。 try { ()。 if (() == Open) ()。 } //數(shù)據(jù)庫操作連接 public static string SqlCmd(string sql, SqlConnection connstr) { string errorstr = null。 } catch (Exception e) { if (e != null) sqldr = null。 if (() == Closed) ()。 public static SqlDataReader SqlReader(string sql, SqlConnection connstr) { SqlDataReader sqldr = null。pwd=change。主要代碼如下: public static SqlConnection connStr = new SqlConnection(Server=D96B85DD938A465.。實(shí)現(xiàn)的途徑也多種多樣,鑒于安全性和復(fù)雜性的需求不同,實(shí)現(xiàn)方法有簡有繁。 } ()。 ff[i].fg = getf[FriendGroup].ToString()。 ff[i].nickname = getf[UserNickname].ToString()。賦值代碼如下: while (()) //getf即是以上的數(shù)據(jù)庫查詢的datareader語句 { ff[i].account=getf[UserAccount].ToString()。//好友分組 }},我們則定義了FriendStruct的數(shù)組。 public string status。 public string nickname。 public long filelength。namespace TCP{ public class FriendStruct { public struct FileInfo { public int filere。using 。 + uid + 39。數(shù)據(jù)庫以用戶ID為標(biāo)準(zhǔn)對好友ID和分組信息進(jìn)行內(nèi)連接查詢,就可以得到基本的好友信息了。數(shù)據(jù)庫的設(shè)計(jì)和信息的傳遞辨別都是比較難實(shí)現(xiàn)的。 =null。 =。 =。服務(wù)器和客戶端都可以通過相同的代碼對UMESSAGE賦值,再通過XmlSerializer方法進(jìn)行將UMESSAGE序列化為XML文檔,最后將XML文檔轉(zhuǎn)化為網(wǎng)絡(luò)流進(jìn)行傳輸。 } set { _fg = value。 } set { _fn = value。 } set { _friend = value。 } set { _info = value。 } set { _ = value。 } set { _accounts = value。 } set { _password = value。 } set { _nickname = value。 private string _fg。//表示注冊或者登錄信息,客戶端信息0為注冊,1為登錄;服務(wù)器返回信息0為用戶已存在,1為注冊成功,2為服務(wù)器未知錯(cuò)誤,3為CLIENT在線檢查,10為登錄失敗,11為登錄成功 private Friend[] _friend。 private string _。 private string _password。這兩個(gè)C類定義了包括服務(wù)器信息,狀態(tài)信息,注冊信息,登錄信息,聊天信息或者請求文件傳輸信息的函數(shù),服務(wù)器和客戶端通過將它們實(shí)例化和序列化再轉(zhuǎn)換成流在網(wǎng)絡(luò)上進(jìn)行傳輸。ER圖如下:聊天文件傳輸nn用戶ID好友ID狀態(tài)IP客戶端賬號昵稱EmailID密碼好友分組狀態(tài)客戶端賬號昵稱EmailID密碼好友分組IP圖3 ER圖 詳細(xì)列表數(shù)據(jù)庫包含兩個(gè)表,分別為記錄用戶信息的TCP_Userinfo和記錄用戶好友信息的TCP_Friendinfo。(1) HASH加密:對用戶的賬號和密碼信息進(jìn)行HASH加密(2) 重復(fù)用戶檢查:將加密后信息與已存在賬號進(jìn)行比較,檢查是否賬號已存在,如果存在就返回錯(cuò)誤信息(3) 注冊成功:將可成功注冊的用戶賬號和密碼寫入數(shù)據(jù)庫內(nèi),并向客戶端返回成功信息2. 修改回應(yīng):(1) 對密碼和信息修改請求進(jìn)行判斷,執(zhí)行和返回修改成功信息3. 登錄回應(yīng):(1) 對登錄的賬號和密碼進(jìn)行加密檢查后發(fā)回正確或錯(cuò)誤情況,并記錄上線信息(2) 好友列表發(fā)送:給成功登錄的賬號發(fā)送好友列表及好友上線信息(3) 上線信息發(fā)送:給成功登錄的賬號的好友發(fā)送在線信息(包括IP,端口等等信息)4. 在線情況:(1) 對登錄,在線,離線的用戶情況進(jìn)行統(tǒng)計(jì),記錄和通知(2) 心跳測試:每隔一段時(shí)間發(fā)送報(bào)文測試用戶是否因意外原因離線(3) 情況記錄:將用戶登錄時(shí)間,IP,下線時(shí)間等信息記錄入數(shù)據(jù)庫 邏輯圖圖2 邏輯圖 數(shù)據(jù)庫設(shè)計(jì) 實(shí)體關(guān)系圖服務(wù)器是作為記錄和讀取數(shù)據(jù)庫信息的載體,與客戶端關(guān)系并不復(fù)雜,這里需要重點(diǎn)考慮客戶端之間的關(guān)系。3. 修改:(1) 密碼修改:應(yīng)該有密碼修改功能(2) 信息修改:可以更改一些注冊信息4. 通信:(1) 即時(shí)聊天模塊:客戶端與客戶端之間建立線程進(jìn)行即時(shí)聊天,也包含有簡單的對稱加解密算法功能。基本結(jié)構(gòu)如圖:圖1 系統(tǒng)基本架構(gòu) 功能模塊設(shè)計(jì)CLIENT:1. 注冊:(1) 可以完成客戶端注冊,客戶端可以通過填寫信息進(jìn)行注冊,信息被發(fā)送到服務(wù)器端。 系統(tǒng)基本架構(gòu)基于C/S架構(gòu)的即時(shí)通信軟件便于對用戶信息進(jìn)行統(tǒng)一管理和保存,面向特定的用戶,對信息的安全控制能力很強(qiáng)。客戶端可以修改昵稱,可以加已知用戶為好友(類似于MSN的好友添加功能)。服務(wù)器端負(fù)責(zé)監(jiān)聽用戶連接請求,負(fù)責(zé)連接數(shù)據(jù)庫存儲(chǔ)用戶信息,負(fù)責(zé)發(fā)送給用戶好友信息,負(fù)責(zé)發(fā)送心跳報(bào)文檢查用戶在線狀態(tài)并即時(shí)讓用戶更新好友在新信息。3 系統(tǒng)總體設(shè)計(jì) 需求分析軟件針對局域網(wǎng)內(nèi)部用戶,實(shí)現(xiàn)用戶間的即時(shí)通信。人們多次努力,試圖統(tǒng)一各大主要 IM 供應(yīng)商的標(biāo)準(zhǔn)(AOL、Yahoo 及 Microsoft),但無一成功,且每一種 IM 仍然繼續(xù)使用自己所擁有的協(xié)議。有許多的 IM 系統(tǒng),如 AOL IM、Yahoo IM 和 MSN IM,它們使用了不同的技術(shù),而且它們互不兼容。好的協(xié)議要求清楚,完整,每一步都必須有明確的定義,并且不會(huì)引起誤解。這樣在協(xié)議動(dòng)作的過程中,雙方必須交換信息,包括控制信息、狀態(tài)信息等等。即時(shí)通信協(xié)議,參與的雙方或者多方是即時(shí)通信的實(shí)體。各種網(wǎng)絡(luò)服務(wù)器基本都遵循同樣的算法:創(chuàng)建一個(gè)端口(Port),接受從網(wǎng)絡(luò)上來的客戶服務(wù)請求,完成計(jì)算后把結(jié)果返回給客戶,如此反復(fù)。采用這種結(jié)構(gòu)的系統(tǒng)目前應(yīng)用非常廣泛。而那些用于訪問服務(wù)器資料的計(jì)算機(jī)則被叫做客戶機(jī)。客戶機(jī)和服務(wù)器都是獨(dú)立的計(jì)算機(jī)。服務(wù)器接受網(wǎng)絡(luò)上的請求,完成服務(wù)后將結(jié)果返回給申請者。對于這種模式而言其中一部分需要作為服務(wù)器,用來響應(yīng)并為客戶提供固定的服務(wù);另一部分則作為客戶機(jī)程序用來向服務(wù)器提出請求或要求某種服務(wù)。這種客戶機(jī)/服務(wù)器模型是一種非對稱式編程模式。 C/S模型客戶機(jī)/服務(wù)器模型,又稱為Client/Server模型,簡稱C/S架構(gòu)。平常所說的C/S(客戶端/服務(wù)器)結(jié)構(gòu)的軟件采用的方式就是異步非阻塞模式的。同樣調(diào)用StreamReader 類的Readlin ( )方法讀取網(wǎng)絡(luò)緩沖區(qū)中數(shù)據(jù),不管是否讀到數(shù)據(jù)都立即返回,而不會(huì)一直掛在此函數(shù)調(diào)用上。異步(asynchronous):異步方式就是當(dāng)發(fā)送方發(fā)送一個(gè)數(shù)據(jù)包以后,一直等到接受方響應(yīng)后,才接著發(fā)送下一個(gè)數(shù)據(jù)包。它提供以下的功能:1) 一個(gè)統(tǒng)一的從網(wǎng)絡(luò)中讀取數(shù)據(jù)的方法2) ,這樣你可以很容易地移植程序。在網(wǎng)絡(luò)編程中我們經(jīng)常會(huì)使用到網(wǎng)絡(luò)中的流對象:NetworkStream。流對外部數(shù)據(jù)源不做任何假定。 .NET中的流在這些情況中。2) 一個(gè)指定的管道。2) 如果數(shù)據(jù)從程序傳輸?shù)酵獠吭?,這就是寫入流。流是一個(gè)用于傳輸數(shù)據(jù)的對象。流失套接字用TCP/IP協(xié)議來使用面向連接的通信;另一方面,數(shù)據(jù)報(bào)套接字用UDP/IP來使用無連接通信。在TCP/IP中,每個(gè)終端都與一個(gè)IP地址和一個(gè)端口號綁定。Windows Sockets 是一個(gè)獨(dú)立于協(xié)議的編程接口,用于編寫網(wǎng)絡(luò)應(yīng)用程序。BSD套接字在經(jīng)過修改后被用作Windows環(huán)境的編程接口(并且被命名為WinSock)。 套接字套接字這個(gè)術(shù)語并沒有定義某個(gè)協(xié)議:它具有兩層含義,但兩者都與一個(gè)協(xié)議相關(guān)。如果在收到ACK之前發(fā)送方已經(jīng)超時(shí),則消息將被放到重發(fā)隊(duì)列中以再次發(fā)送?,F(xiàn)在可以發(fā)送和接收消息了。服務(wù)器必須向客戶發(fā)送一個(gè)確認(rèn)(ACK)以及服務(wù)器的序列號(SYN)。客戶應(yīng)用程序必須執(zhí)行一個(gè)主動(dòng)打開(active open),為此,它向服務(wù)器應(yīng)用程序發(fā)送一個(gè)同步序列號(SYN)以標(biāo)識(shí)連接。TCP要求在發(fā)送數(shù)據(jù)之前必須打開連接。TCP協(xié)議就使用這種可靠通信。通常說的TCP/IP是一組協(xié)議的總稱,TCP/IP實(shí)際上是一個(gè)協(xié)議族,包括100多
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1