natchat 类似飞鸽的てき局きょく域いき网聊天てん,文ぶん件けん传输系けい统 作者さくしゃ: 黄き日び昇のぼり 2015303081 刘书敏さと 2015303087 (这个项目写うつし的てき太ふとし烂了,凑活着かっちゃく放ひ上じょう来らい吧_(:3」∠)_ 项目简介 可か以自动探测到局きょく域いき网内其他设备的てき加入かにゅう与あずか退出たいしゅつ,自じ动更新しん设备列れつ表ひょう(没ぼつ测试过广域いき网) 可か以向其他设备群ぐん发消息いき、单发消息しょうそく、单发文ぶん件けん 自じ带颜文字もじ列れつ表ひょう,可か以自定てい义 项目使用しよう visual studio 2017 进行编写,c++11的てき线程库处理り并发,winsock2处理tcp和わudp连接,mfc编写界面かいめん。如果无法编译,请更换一下か项目的もくてき windows SDK 版本はんぽん,换成在ざい本ほん机つくえ安あん装そう过的版本はんぽん。 文ぶん件けん结构 网络模も块 ConcurrentSender 负责发送一いち个TCP消息しょうそく,本ほん类不考こう虑数据すえ的てき编码,只ただ是ぜ向こう指定してい的てきIP和わ端はし口こう发送一いち个 tcp 数すう据すえ包つつめ,在ざい发送完かん毕之后きさき结束。在ざい实例化か本ほん类时,将はた开启一个新的线程来发送数据。 SendingManager 本ほん模も块提供ていきょう了りょう发送数すう据すえ的てき接せっ口こう,由ゆかり本ほん模も块负责实例れい化か ConcurrentSender 并维护发送队列、确保数すう据すえ发送成功せいこう。 模かたぎ块使用しよう了りょう一个并发队列来处理消息发送。调用发送数すう据すえ的てき方法ほうほう不ふ会かい等とう到いた发送完成かんせい之の后きさき才ざい返かえし回かい,而是立りつ即そく返かえし回かい,不ふ会かい阻塞调用线程。本ほん模も块拥有ゆう一个自己的线程来处理发送队列,确保消息しょうそく发送成功せいこう TicToc 本ほん模も块负责处理り客きゃく户端发现相しょう关的操作そうさ。程ほど序じょ在ざい启动时会开启一いち个 UDP 接收せっしゅう端はし,然しか后きさき使用しよう UDP 广播一个连接请求 (TIC)。接收せっしゅう到いた此请求もとめ的てき客きゃく户端会かい使用しよう TCP 向こう发送端はし发送一いち个应答こたえ (TOC),并将此客户端 ip 及计算さん机つくえ名めい加入かにゅう到いた已やめ知的ちてき计算机つくえ列れつ表ひょう中ちゅう。接收せっしゅう端はし在ざい收おさむ到いた TOC 之の后きさき也会相しょう应的修おさむ改あらため自己じこ的てき计算机つくえ列れつ表ひょう,这样就完成かんせい了りょう一次客户端发现操作。在ざい客きゃく户端要よう退出たいしゅつ网络时,也会向こう列れつ表ひょう中ちゅう的てき所有しょゆう计算机つくえ发送一いち个 BYE 消息しょうそく,从而让其他た客きゃく户端将はた本ほん客きゃく户端从列表ひょう中ちゅう删去。 RecevingManager 本ほん模も块负责接收せっしゅうTCP消息しょうそく并更新しん消息しょうそく列れつ表ひょう、通知つうち主ぬし线程。模かたぎ块在启动时会开启一个单独的线程来启动 TCP 循环,在ざい接收せっしゅう到いた一いち个TCP消息しょうそく之の后きさき更新こうしん列れつ表ひょう,发送Windows消息しょうそく通知つうち主ぬし线程进行处理。 ChatService 接せっ口こう模も块,提供ていきょう了りょう供きょう主ぬし线程(界面かいめん)调用的てき函数かんすう和わ数すう据すえ。