用Win32 SDK & C++实现的一个简易版局域网聊天软件

 

 

效果图:


 

 

程序简要说明:
程序名称:简易局域网聊天工具
开发方式: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、本来有些地方要用到多线程同步来排错的,不过自己偷懒了,省了这一步,所以程序可以会有时出现错误,有时候不会。

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

在此次个人小项目中得到的经验教训和总结:明天再写~~~

 



你可能感兴趣的:(多线程,C++,tcp,服务器,聊天,工具)