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

正文內(nèi)容

畢業(yè)設(shè)計論文-tcp協(xié)議下的即時通訊軟件的實現(xiàn)-資料下載頁

2025-11-07 18:30本頁面

【導(dǎo)讀】等優(yōu)點而受到廣泛的使用。設(shè)計并實現(xiàn)一個能夠處理多用戶進行實時、安全的即時。通信系統(tǒng)具有較強的現(xiàn)實意義。即時通信的底層通信是通過SOCKET套接字接口實現(xiàn)。當前的主流UNIX系統(tǒng)和微軟的WINDOWS系統(tǒng)都在內(nèi)核提供了對SOCKET字接口。使用這個統(tǒng)一的接口,可以編寫一個可移植的TCP/IP通信程序。夠在INTERNET上可靠的傳輸。存和心跳報文的發(fā)送??蛻舳瞬捎肞2P方式實現(xiàn)消息傳遞,并能實現(xiàn)文件的傳輸。

  

【正文】 000毫秒) = 5000。 = true。 CheckStatus 就是用于向客戶端發(fā)送檢查信息的方法,它會向遍歷連入的客戶端 (alSock),然后依次向客戶端發(fā)送信息 ,如果發(fā)現(xiàn)客戶端沒有響應(yīng),就會如果發(fā)現(xiàn)對方無回應(yīng),則關(guān)閉相應(yīng)的 SOCKET,并更新數(shù)據(jù)庫的用戶在線狀態(tài),同時向該用戶這里顯示已連入的連接 這里顯示傳入的原始信息 第 16 頁 共 28 頁 的所有好友發(fā)送用戶已下線的通知。 客戶端 圖 5 注冊界面 圖 6 登錄、聊天、文件傳輸界面 同步 套接字客戶端 客戶端發(fā)起同步套接字連接,并傳送登錄或者注冊信息,由于兩者方式類似,這里僅列出用戶登錄的代碼: region 發(fā)送服務(wù)器 登錄 信息,并接收服務(wù)器反饋信息 public void Client() { 建立 SOCKET 發(fā)送信息 : try { 好友詳細信息列表 聊天信息 第 17 頁 共 28 頁 IPEndPoint ServerIPEP = new IPEndPoint((),8888)。 c = new Socket(,)。 ((EndPoint)ServerIPEP)。 s = new MemoryStream()。 (s,_message)。 byte[] d=new byte[]。 (0, )。 (d, 0, )。 int i = (d, 0, , )。 } catch(Exception ex) { ()。 } 以下代碼讀取了服務(wù)器返回給客戶端的信息(注冊和登錄的成功與失?。绻祷亓说卿洺晒Φ男畔?,還會讀取服務(wù)器給出的 FriendStruct 結(jié)構(gòu)以得到用戶的好友信息: region 接收反饋信息 byte[] data = new byte[2048]。 while(true) { int rect = (data)。 byte[] chat = new byte[rect]。 (data,0,chat,0,rect)。 UMessage bumessage = (UMessage)(new MemoryStream(chat))。 string[] fg。 string _fg=。 if(==3) { } else if(==11) { fg=(39。,39。)。 int xxx=。 ff=。 for(int i=0。ixxx。i++) { string[] ems=new string[5]。 ems[0]=ff[i].account。 ems[1]=ff[i].nickname。 ems[2]=fg[(ff[i].fg)]。 ems[3]=ff[i].IP。 第 18 頁 共 28 頁 ems[4]=ff[i].status。 ListViewItem item = new ListViewItem(ems)。 (item)。 } CSERVER 是一個用于開啟監(jiān)聽 P2P 信息的方法,客戶端在登錄成功以后就會立刻開啟監(jiān)聽器,才能夠?qū)崿F(xiàn)與其它 客戶端的聊天: th = new Thread(new ThreadStart(CServer))。//新建一個用于監(jiān)聽其它客戶端信息的線程 ()。//打開新線程 (+登錄 成功! )。 =false。 =false。 } else if (==2) { (服務(wù)器未知錯誤 )。 } else {(())。} } endregion } endregion 圖 7 登錄成功后的客戶端界面 客戶端之間的聊天同樣使用了序列化的 XML文檔,用戶在登錄成功后就會啟動一個新的監(jiān)聽器去監(jiān)聽其它客戶端傳入的聊 天信息并且進行判斷再將其它用戶的聊天信息顯示在界面上。這里也不再 闡述代碼。 第 19 頁 共 28 頁 采用異步套接字 的文件傳輸 文件傳輸是通過一個類庫實現(xiàn)的。由于文件傳輸?shù)拇a實現(xiàn)復(fù)雜,通過類庫可以大量的簡化代碼,使主程序簡潔易懂。類庫 包括了, , 定義了基礎(chǔ)的文件發(fā)送函數(shù), 則僅包含初始化文件發(fā)送的函數(shù); 和 則是反之亦然。 核心 代碼如下: :這個類實現(xiàn)了套接字的開啟和 數(shù)據(jù)的傳輸 using System。 using 。 using 。 namespace { /// summary /// ClientBase摘要 . /// /summary public class ClientBase { private const int BUFFERSIZE = 4*1024。 private int _port。 private string _serverIP。 private Socket _mainSoc。 private ClientInfo _info。 private AsyncCallback _dataRecievedCallback。//異步回調(diào)方法 public event NetworkEventHandler DataRecieved。//定義一個事件:接收到數(shù)據(jù)時引發(fā)事件 public ClientBase(string serverIP,int port) { _serverIP = serverIP。 _port = 11000。 _mainSoc = new Socket( , , )。 _info = new ClientInfo( _mainSoc, new byte[BUFFERSIZE])。//ClientInfo包含了建立的套接字和套接字讀取的 BYTE大小 _dataRecievedCallback = new AsyncCallback(OnDataRecieved)。//異步回調(diào) } // 可重寫為其它超類實現(xiàn)更強大的功能,例如斷點續(xù)傳 第 20 頁 共 28 頁 public virtual void OnDataRecieved(byte[] data) { if (DataRecieved != null) { DataRecieved(this, new NetworkEventArgs(_info))。 } } public void Send(byte[] data) { (data)。//發(fā)送數(shù)據(jù) } public void Connect()//建立與遠程主機的連接 { ( new IPEndPoint( (_serverIP), _port))。 } public void Disconnect()//關(guān)閉連接 { if () ()。 } public void WaitForData() { // 異步接收數(shù)據(jù) (,0, , _dataRecievedCallback,null)。 } private void OnDataRecieved(IAsyncResult ar) { // 垃圾回收 ()。 int byteCount = 0。 byteCount = (ar)。 if (byteCount == 0) { // 服務(wù)器斷開連接 . } else { OnDataRecieved()。//接收到了數(shù)據(jù) WaitForData()。 } } 第 21 頁 共 28 頁 } } 派生類 INPCli: using System。 using 。 namespace { /// summary /// INPClient的摘要 . /// /summary public class INPClient : ClientBase { public INPClient(string serverIP,int port) : base(serverIP,port) {} public void SendFile(string fileName)//發(fā)送文件類,開啟一個文件流,將文件流依次讀入,再使用 CLIENTBASE類中的數(shù)據(jù)發(fā)送方法進行發(fā)送 { FileStream fs = new FileStream( fileName,)。//根據(jù)傳入的參數(shù)打開文件 byte[] im = new byte[]。//根據(jù)文件長度定義一個 BYTE (im,0,)。//將文件流中讀取字節(jié)塊寫入相應(yīng)緩沖區(qū) (im)。//使用基類 (CLIENTBASE) 的數(shù)據(jù)發(fā)送方法進行文件傳送 } } } INPSERVER 和 SERVERBASE 與 INPCLIENT 和 CLIENTBASE 類似,所以這里不再詳述。 結(jié) 論 即時通信是是網(wǎng)絡(luò)發(fā)展的必然趨勢,它的技術(shù)仍然在不斷的改進和蓬勃發(fā)展中。本次設(shè) 計雖然實現(xiàn)了簡單的即時通信功能,但是從很多方面來說都是不完善的:實現(xiàn)了字符聊天卻沒有實現(xiàn)多媒體即時通信;實現(xiàn)了同步套接字聊天和異步套接字傳送文件卻沒有實現(xiàn)更科學(xué)的異步套接字聊天和同步套接字傳送文件。 在本次設(shè)計中,我深刻體會到 SOCKET 編程的基礎(chǔ)性, 多樣化。由于與網(wǎng)絡(luò)緊密聯(lián)系, SOCKET 編程的也可能出現(xiàn)各種未知的問題,需要我們更深入地了解網(wǎng)絡(luò)協(xié)議和架構(gòu),才可能做出通用性高,穩(wěn)定性高的即時通信程序。 第 22 頁 共 28 頁 參考文獻 [1] Tobin. Titus, Fabio Claudio Ferracchiati. C線程參考手冊 [M].王敏譯 .北京 : 清華大學(xué)出版社 ,2020。 [2] 黃承安 ,謝東文 ,許聰 . C網(wǎng)絡(luò)應(yīng)用案例導(dǎo)航 [M].北京 : 中國鐵道出版社 ,2020。 [3] Andrew Krowczyk, vinod Kumar. .NET網(wǎng)絡(luò)高級編程 [M].北京 : 清華大學(xué)出版社 ,2020。 [4] 周存杰 . Visual C .NET網(wǎng)絡(luò)核心編程 [M].北京 : 清華大學(xué)出版社 ,2020。 [5] 方睿 ,吳四九 ,刁仁宏 . 網(wǎng)絡(luò)數(shù)據(jù)庫原理及應(yīng)用 [M].四川 : 四川大學(xué)出版社 ,2020。 [6] 李文志 ,申劍 ,盧方國 ,柳正青 ,王宏 ,陳建偉 . 在 .NET 框架下開發(fā)一個即時通信系統(tǒng) [J].現(xiàn)代計算機 .2020(2):6872。 [7] 王躍 . INTERNET 上大規(guī)模用戶即時 通信 方法研究 [D].北京 : 北京工業(yè)大學(xué) [碩士論文 ],2020。
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1