网络编程-基于MFC的仿QQ聊天室-2020

基于MFC的仿QQ聊天室(2020)

有幸学习过网络编程的一些知识,出于对编程的热爱,把曾经的一次简单实践编程作业进行了自定义的完成。
编程所需:
编程工具为VS 2010,需要掌握MFC的基本操作以及网络编程的基本原理,对windows套接字有一定理解。
注:本文不提供开发教程,只提供使用步骤、exe文件以及源码,我想对于有一定开发基础的人来说足够了。

主要的功能实现如下:

服务器端:
1.在线人数和列表、昵称显示;
2.群公告;
3.服务器日志、全局消息;
4.历史记录自动保存;
功能截图:
服务器截图
客户端:
1.昵称设置;
2.私聊、群聊;
3.在线用户列表;
4.登录日志;
5.历史记录自动保存:
客户端截图:
在这里插入图片描述
使用演示及必要说明:
历史记录说明:
客户端中包括日志、群聊和私聊消息;服务器中包括日志和全局消息。这些记录都是在断开连接后自动保存,若需要删除可在txt文件中手动删除。如图(仅以客户端为例):
在这里插入图片描述
以下,做操作演示
启动一次服务器、启动两次客户端,服务器端口自行选择合适的(需要注意不要与常用端口号冲突,这些涉及到计算机网络请自行百度,建议大于1024)即可,客户端端口设置需与服务器端口一致才可连接成功。由于在本机上演示,故地址选择127.0.0.1。

1.启动服务器:
在这里插入图片描述
2.启动两个客户端并连接,由服务器发送公告:
在这里插入图片描述
3.群聊(你好11发起,无需设置私聊ID,输入消息点击群发即可):
在这里插入图片描述
4.私聊(你好11发起,必须设置私聊ID,输入消息点击私发):
在这里插入图片描述
注:点击断开才可以自动保存记录;
5.历史记录
点击读取按钮,如图:
在这里插入图片描述
6.查看(任选一个即可)
在这里插入图片描述
源码下载:
MFC聊天室

  • 12
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
网络编程聊天是一种基于网络的应用程序,允许多个用户通过网络进行实时的消息交流。MFC(Microsoft Foundation Classes)是微软提供的一套用于Windows平台的C++类库,可以简化Windows应用程序的开发。在MFC中开发网络编程聊天可以使用socket套接字编程来实现。 以下是一个简单的MFC网络编程聊天的示例: 1. 创建MFC应用程序项目,并添加一个对话框。 2. 在对话框中添加一个编辑框用于显示聊天消息,一个编辑框用于输入消息,一个按钮用于发送消息。 3. 在对话框类的头文件中添加以下成员变量和函数声明: ```cpp #include <afxsock.h> class CMyDialog : public CDialog { public: CMyDialog(CWnd* pParent = nullptr); CAsyncSocket m_socket; CString m_strServerIP; UINT m_nServerPort; void ConnectToServer(); void DisconnectFromServer(); void SendMessageToServer(CString message); // ... protected: virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); afx_msg void OnButtonSend(); afx_msg void OnButtonConnect(); afx_msg void OnButtonDisconnect(); afx_msg LRESULT OnSocketReceive(WPARAM wParam, LPARAM lParam); DECLARE_MESSAGE_MAP() }; ``` 4. 在对话框类的源文件中实现成员函数: ```cpp CMyDialog::CMyDialog(CWnd* pParent /*=nullptr*/) : CDialog(IDD_MYDIALOG, pParent) { m_strServerIP = _T("127.0.0.1"); // 服务器IP地址 m_nServerPort = 12345; // 服务器端口号 } void CMyDialog::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT_SERVER_IP, m_strServerIP); DDX_Text(pDX, IDC_EDIT_SERVER_PORT, m_nServerPort); } BOOL CMyDialog::OnInitDialog() { CDialog::OnInitDialog(); // 初始化socket库 AfxSocketInit(); // 创建socket对象 m_socket.Create(); return TRUE; } void CMyDialog::ConnectToServer() { // 连接到服务器 m_socket.Connect(m_strServerIP, m_nServerPort); } void CMyDialog::DisconnectFromServer() { // 断开与服务器的连接 m_socket.Close(); } void CMyDialog::SendMessageToServer(CString message) { // 发送消息到服务器 m_socket.Send((LPCTSTR)message, message.GetLength()); } void CMyDialog::OnButtonSend() { // 获取输入的消息 CString message; GetDlgItemText(IDC_EDIT_MESSAGE, message); // 发送消息到服务器 SendMessageToServer(message); // 清空输入框 SetDlgItemText(IDC_EDIT_MESSAGE, _T("")); } void CMyDialog::OnButtonConnect() { // 连接到服务器 ConnectToServer(); } void CMyDialog::OnButtonDisconnect() { // 断开与服务器的连接 DisconnectFromServer(); } LRESULT CMyDialog::OnSocketReceive(WPARAM wParam, LPARAM lParam) { // 接收服务器发送的消息 char buffer[1024]; int bytesRead = m_socket.Receive(buffer, sizeof(buffer) - 1); if (bytesRead > 0) { buffer[bytesRead] = '\0'; CString message(buffer); // 在编辑框中显示消息 GetDlgItem(IDC_EDIT_CHAT)->SetWindowText(message); } return 0; } BEGIN_MESSAGE_MAP(CMyDialog, CDialog) ON_BN_CLICKED(IDC_BUTTON_SEND, &CMyDialog::OnButtonSend) ON_BN_CLICKED(IDC_BUTTON_CONNECT, &CMyDialog::OnButtonConnect) ON_BN_CLICKED(IDC_BUTTON_DISCONNECT, &CMyDialog::OnButtonDisconnect) ON_MESSAGE(WM_SOCKET, &CMyDialog::OnSocketReceive) END_MESSAGE_MAP() ``` 5. 在对话框的资源文件中添加相应的控件,并设置控件的ID和属性。 6. 编译并运行程序,输入服务器的IP地址和端口号,点击连接按钮连接到服务器。然后可以输入消息并点击发送按钮发送消息到服务器,服务器会将消息广播给所有连接的客户端。 注意:以上示例只是一个简单的MFC网络编程聊天的实现,实际的聊天可能需要更多的功能和处理逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值