C# socket 局域网聊天程序的一点心得
生活随笔
收集整理的這篇文章主要介紹了
C# socket 局域网聊天程序的一点心得
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C# socket 局域網聊天程序的一點心得
(一)服務器與客戶端的關系
1、服務器開啟監聽服務? ? ? 服務器使用特定的端口不停的監聽來自客戶端的消息。(開啟一個新線程進行監聽)。
2、監聽來自客戶端的登錄信息并進行校驗;
? ? ? 客戶端登陸時會向服務器發送驗證消息(用戶名、密碼),服務器接收到消息后查詢數據庫進行驗證。驗證成功后,發送允許登錄信號,驗證失敗,發送不允許登錄信號。
3、定時檢查客戶端的連接。
? ? ? 監聽來自各個客戶端發來的心跳包,服務端每隔特定時間檢測客戶端是否有信息發送。如有則在線,否則已下線。
4、廣播信息給客戶端。 ? ??
? ? ? 打包所有客戶端的信息(IP地址、端口等),每隔特定時間廣播轉發給每個上線的客戶端;
(二)客戶端與客戶端的關系
1、客戶端開啟監聽服務? ? ? 客戶端使用特定的端口不停的監聽來自其他客戶端的消息。(開啟一個新線程進行監聽)。
2、點對點傳輸數據。?
? ? ? 客戶端已從服務器獲知了各個在線客戶端的ip及端口號。這樣就可以與其他客戶端進行連接。
(三)有關不同類型的文件?
? ? ? ? 做聊天程序。會發送不同類型的文件,如文本、文件、圖片等格式。這就需要我們做好協議。我們可以把要發送的信息進行包裹。做一個標記。要發送的文本信息前添加幾個字節或在后面添加幾個字節。用來標記這是文本信息。在接收的時候我們獲取標記信息,并還原源消息。通過標記就可以知道。信息的類型。文件、圖片等也是如此。(四)有關跨線程
? ? ? ?做聊天程序會開啟多個線程,這就避免不了跨線程訪問,我們可以取消跨線程檢查機制?<span style="font-size:18px;">CheckForIllegalCrossThreadCalls = false;</span>?在這里不推薦使用。可能會引發其他問題。我們可以使用委托。例如我們想要在一個新線程中訪問界面線程的控件我們可以這樣實現 TextBox1.Dispatcher.Invoke(new Action(() => { TextBox1.Text = "helloword"; }));實例:鏈接:http://pan.baidu.com/s/1qWl5jFu 密碼:6p4t
總結
以上是生活随笔為你收集整理的C# socket 局域网聊天程序的一点心得的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: socket 10106问题解决日记
- 下一篇: 使用C#实现Rundll32程序功能