C++如何实现聊天小程序
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天小编给大家分享一下C++如何实现聊天小程序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解
千家信息网最后更新 2026年11月02日C++如何实现聊天小程序
今天小编给大家分享一下C++如何实现聊天小程序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
涉及的技术:
c++网络编程
c++多线程
c++ STL
设计原理
以一个结构体的形式存储客户端,用vector存取存在的客户端,开启多线程处理逻辑
服务器允许登陆多个客户端,允许公屏聊天也允许私聊,默认情况下属于公屏聊天,若想私聊,格式为"@用户名+要发送的消息";运行效果如下图:

服务器实现
#include "stdafx.h"#include#include "windows.h" //一定要包含该头文件#include "process.h"#include #include #include using namespace std;#pragma comment(lib, "WS2_32.lib") //显示加载 ws2_32.dll ws2_32.dll就是最新socket版本int g_curPlayerNum = 0; //当前连接数const char*g_PlayerName[] = //假定的聊天者名字{ "aaaa", "bbbb", "cccc", "dddd",};struct PlayerInfo //利用结构存储连接的客户端{ SOCKET sock; string name;};vector g_clientSockList; //利用vector存取已连接的客户端void process(void*param){ int index = *(int*)param; //当前子线程编号 while (1) { //服务器接收信息 //int index = *(int*)param; char buf[2048] = { 0 }; //接收缓冲区 int bytes; if ((bytes = recv(g_clientSockList[index].sock, buf, sizeof(buf), 0)) == SOCKET_ERROR) { cout << "服务器接收数据失败!" << endl; } //服务器转发(含逻辑处理) if (buf[0] == "@") { //私聊 string Buf(buf); string recvPlayerName = Buf.substr(1, 4); //分离出接收者名字 copy(g_clientSockList[index].name.begin(), g_clientSockList[index].name.end(), &buf[1]); for (vector ::iterator it = g_clientSockList.begin(); it != g_clientSockList.end(); it++) { if (it->name == recvPlayerName) { if (send(it->sock, buf, strlen(buf), 0) == SOCKET_ERROR) { cout << "发送数据失败 to" << it->name << endl; } break; } } } else //群聊 cout << g_clientSockList[index].name << "对" << "所有人说:" << buf << endl; }}int main(){ cout << "-----------聊天室服务器-----------" << endl; //套接字初始化 WSADATA wsaData; //这个结构被用来存储被WSAStartup函数调用后返回的 Windows Sockets 数据。 WORD sockVersion = MAKEWORD(2, 2); //windows网络编程库的版本号信息 if (WSAStartup(sockVersion, &wsaData) != 0) //WSAStartup函数是在程序中初始化并加载Windows网络 { cout << "套接字初始化失败!" << endl; return 0; } //创建服务器套接字 SOCKET SeverSocket; if ((SeverSocket = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR) { cout << "套接字创建失败!" << endl; return 0; } struct sockaddr_in SeverAddress; //一个绑定地址:有IP地址,有端口号,有协议族 memset(&SeverAddress, 0, sizeof(sockaddr_in)); //初始化结构体 SeverAddress.sin_family = AF_INET; SeverAddress.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//填入本机IP地址 SeverAddress.sin_port = htons(60000);//设定端口号 //绑定套接字 指定绑定的IP地址和端口号 if (bind(SeverSocket, (sockaddr*)&SeverAddress, sizeof(SeverAddress)) == SOCKET_ERROR) { cout << "套接字绑定失败!"< 客户端
#include "stdafx.h"#include "windows.h"#include "iostream"#include "process.h"#includeusing namespace std;#pragma comment(lib, "ws2_32.lib")void Receive(void *param){ string msg; while (1) { //客户端接受来自服务器的数据 SOCKET clientSocket = *(SOCKET*)(param); char recvbuf[2048] = {}; //接收缓冲区 if (recv(clientSocket, recvbuf, 2048, 0) == SOCKET_ERROR) { cout << "数据接受失败" << endl; } else { msg = recvbuf; char sendPlayerName[5] = { 0 }; int len = strlen(recvbuf); //消息长度 copy(&recvbuf[1], &recvbuf[5], sendPlayerName); //分离出名字 msg = msg.substr(5, len - 5); cout << sendPlayerName << "对你说:" << msg< 以上就是"C++如何实现聊天小程序"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
服务器
服务
客户
客户端
地址
套接字
口号
数据
线程
结构
消息
知识
篇文章
程序
名字
就是
缓冲区
网络
逻辑
c++
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州万易互联网科技有限公司
今日互联网科技
互联网科技有限公司经营范围
有马互联网科技
远信互联网科技
互联网与未来科技
顺玮阁互联网科技
互联网金融科技委员会
重庆科技学院互联网
甘肃拓世互联网科技有限公司
青岛中康互联网医疗科技有限公司
须眉科技是互联网公司吗
互联网科技热点资讯
互联网科技有哪些公司
宝灵互联网科技有限公司
工业互联网科技成果转化
图游互联网科技
互联网高科技行业有哪些企业
北京互联网科技类企业分布
互联网科技创业计划的风险分析
科技和互联网公司
互联网科技博客
广西拼得多互联网科技有限公司
博兴的互联网电子科技公司
互联网汽车科技小镇
玖二柒互联网科技公司待遇
福州新华互联网科技学校 知乎
新兴科技互联网创新大赛颁奖典礼
上海万顺科技互联网有限公司招聘
知域互联网科技有限公司官网