看到最近有人研究IM,把以前的東西翻出來了,供想學習這方面的研究研究
通訊協議UDP,聊天方式點對點(P2P)
此項目簡單實現了早期QQ的基本功能
- 文字聊天
- 表情,圖片發送
- 發送離線消息,圖片
- 在線/離線,文件傳送
- 上傳自定義頭像
- 群功能
- 語音、視頻聊天
- 天氣預報
- 自定義選項卡
- 截圖功能
理論上功能是實現了,但是在NAT穿透上有問題,所以P2P有時不能成功,所以在外網,只是一個玩具而已
客戶端運行截圖
涉及到的技術
網絡通訊
- 消息序列化,加密
- 數據傳輸 協議定義,消息分塊發送,消息完整性判斷和重復發送,SOKET5代理
- NAT穿透,俗稱打洞
- 消息緩存/轉發
DOC里有之前畫的流程圖,用Diagram Designer打開
界面互動
- 窗體互動
- 界面繪制
- 換膚
RTF文本處理
- 字體大小顏色控制
- RTF圖片提取發送
編譯好的客戶端,能連上測試服務器,需要先注冊賬號
http://119.10.29.11:8081/SinoTalk.rar
有不明白的歡迎留言討論
項目說明
請勿將此程序用於商業用途,以免產生不必要的糾紛,僅供學習,參考
開發時間2010年,比較久遠,有很多問題
請關注我的新項目CRL快速開發框架
http://www.cnblogs.com/hubro/p/4288047.html當前項目客戶端編譯運行即可連上測試環境服務器(隨后可能關閉)
測試服務器地址 http://119.10.29.11:8081/ 賬號由此注冊
項目划分
CLient 客戶端
Comm 公共方法
DuoDuo 啟動程序
IpcChannelObj 服務控制台通訊對象
Server 服務主程序
SinoTalkServerConsole 服務控制台
SinoTalkService 服務程序(在參數配置主程序路徑)
SinoTalkWeb 網站接口(為避免糾紛,未公開,請參考網上示例)
Update 升級程序
ServerSetup 服務安裝程序
數據庫(為避免糾紛,未公開)此項目原始版本為較老的.NET2.0/3.5開發測試時按實際情況調整生成環境
端口地址更改
服務器端口
SinoTalk.Comm.P2PConsts.SERVER_UDP_PORT=2280
客戶端服務器地址綁定
SinoTalk.Client.ClientConsts._SERVER_ADDRESS="119.10.29.11"Activex控件注冊
語音和視頻為Activex控制,需要先注冊才能編譯通過
DEBUG目錄有注冊文件
regsvr32 "aocx2.ocx"
regsvr32 "Vocx.ocx"
regsvr32 "ImageOle.dll"
項目下載地址: 鏈接: http://pan.baidu.com/s/1kTst3H9 (重新修改了)