用Win32 SDK & C++實現的一個簡易版區域網路聊天軟體

來源:互聯網
上載者:User

 

 

:

 

 

程式簡要說明:
程式名稱:簡易區域網路聊天工具
開發方式:Win32 SDK 、C++
開發環境:Visual C++ 6.0
功能: 支援一對一聊天、傳送、接收檔案,支援群聊,即時好友名單,簡陋的訊息提示。
缺點:使用者介面不友好,排錯功能較差,一個IP地址只能對應一個程式執行個體。

 

 

程式架構的來源:
在區域網路實現一個聊天工具,主要需要解決的是無伺服器的問題。所以,可以通過利用UDP協議廣播資料報這一個特性來解決。因為廣播的資料報內包括源IP地址,收到資料報的一端可以將這些IP地址儲存,作為好友名單的一項,為後面單播通訊作準備。由此解決沒有伺服器作為中介的問題。所以,區域網路內的每一個端點既是伺服器又是用戶端。既然有了對端的IP地址,傳送檔案這一個問題也相應解決了,可以利用TCP協議和多線程實現檔案的傳送。


程式主要實現方式:
1、程式需要綁定兩個連接埠,一個UDP連接埠用來接收所有單播訊息、群聊訊息、檔案傳送控制訊息。還有用來廣播登入訊息,廣播登出訊息,廣播群聊訊息,單播聊天訊息、單播檔案傳送控制訊息。程式通過接收廣播的登入和登出訊息,實現維護即時線上好友名單。

2、傳送檔案需自己定義簡單的文本協議,用來作為檔案傳送的控制資訊。傳送檔案用多線程來實現,UDP連接埠接收請求傳送檔案的控制項資訊,然後用TCP連接埠accept一個串連,建立一個線程來傳送檔案。總的來說,傳送檔案一方作服務端,接收檔案作為用戶端。

3、程式選用select模型,select  UDP連接埠和TCP連接埠。

4、本來有些地方要用到多線程同步來排錯的,不過自己偷懶了,省了這一步,所以程式可以會有時出現錯誤,有時候不會。

---------------------------------------------------

在此次個人小項目中得到的經驗教訓和總結:明天再寫~~~

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.