C++怎么实现简易UDP网络聊天室
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天小编给大家分享一下C++怎么实现简易UDP网络聊天室的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们
千家信息网最后更新 2026年11月02日C++怎么实现简易UDP网络聊天室
今天小编给大家分享一下C++怎么实现简易UDP网络聊天室的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
工程名:NetSrv
NetSrv.cpp
//服务器端#include#include void main(){//加载套接字库 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(1,1); err = WSAStartup(wVersionRequested,&wsaData); if(err!=0){ return; } if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1){ WSACleanup(); return; } //创建套接字 SOCKET sockSrv = socket(AF_INET,SOCK_DGRAM,0);//第二个参数是数据报套接字 SOCKADDR_IN addrSrv;//对于服务器端,也就是接收端,先进行一个绑定,定义一个地址结构体的变量 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//对结构体中的成员进行赋值,用htonl转换一下 //将主机数转换成无符号长整型的网络字节顺序。本函数将一个32位数从主机字节顺序转换成网络字节顺序。 addrSrv.sin_family=AF_INET;//地址族 addrSrv.sin_port=htons(6000);//端口号 //绑定套接字 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//将本地主机地址和端口进行绑定 //套接字,地址结构的指针,地址结构的长度 char recvBuf[100];//字符数组,接收信息 char sendBuf[100];//发送信息 char tempBuf[200];//存放中间数据 SOCKADDR_IN addrClient;//在接收的时候,获取对方的信息,地址结构体的变量 int len=sizeof(SOCKADDR);//初始化,长度为,地址结构体的长度 while(1)//保证通讯过程能够持续进行 { //等待并接收数据 recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len); //套接字,接收数据buf,其长度,,地址结构的指针,指向整型的指针主要用来返回所接收的地址长度 if("q"==recvBuf[0])//判断接收的数据第一个字符是q吗, { sendto(sockSrv,"q",strlen("q")+1,0,(SOCKADDR*)&addrClient,len); //若是,服务器也发一个q字符,套接字,q,长度多发一个字节,,地址用刚刚得到的,最后一个是地址结构的长度,通过len可得 printf("Chat end!"); break; } //如果接收的不是q,那么对数据进行一个格式化,放到tempBuf中,点分十进制的ip地址,所接收的数据。 sprintf(tempBuf,"%s say : %s",inet_ntoa(addrClient.sin_addr),recvBuf); printf("%s",tempBuf);//将数据打印输出 //发送数据 printf("please input data:"); gets(sendBuf);//从标准输入流中获取一行数据,当我们输入一行数据,以回车,就把数据放到指定的内存指针中了。 sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrClient,len); //套接字,所要发送的数据,(这个是数据长度,用strlen获取)多发一个字节,所发送的地址, } //关闭套接字 closesocket(sockSrv); WSACleanup();//终止对套接字的使用}
NetClient.cpp
//客户端#include#include void main(){ //加载套接字库 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(1,1); err = WSAStartup(wVersionRequested,&wsaData); if(err!=0){ return; } if(LOBYTE(wsaData.wVersion)!=1|| HIBYTE(wsaData.wVersion)!=1){ WSACleanup( ); return; } //创建套接字 SOCKET sockClient = socket(AF_INET,SOCK_DGRAM,0); //,类型(数据报),自动选择合适协议 SOCKADDR_IN addrSrv; //基于upd的客户端(发送端),不需要去绑定,但是需要设置发送到对方机器的地址信息 //服务器端的地址信息,因为在本机上,所以还是127.0.0.1),用inet_addr将点分十进制转换成ulang类型 addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(6000);//设置服务器端程序在哪个端口上等待数据 char recvBuf[100];//接收数据 char sendBuf[100];//发送数据 char tempBuf[200];//临时数据的存储 int len = sizeof(SOCKADDR);//接收所返回的地址结构的长度 while(1) { //发送数据 printf("Please input data:"); gets(sendBuf); sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrSrv,len); //等待并接收数据 recvfrom(sockClient,recvBuf,100,0,(SOCKADDR*)&addrSrv,&len); if("q"==recvBuf[0]) { sendto(sockClient,"q",strlen("q")+1,0,(SOCKADDR*)&addrSrv,len); printf("Chat end!"); break; } sprintf(tempBuf,"%s say : %s",inet_ntoa(addrSrv.sin_addr),recvBuf); //服务器端ip地址信息(格式化),接收的数据 printf("%s",tempBuf); } //关闭套接字 closesocket(sockClient); WSACleanup();}
ws2_32.lib

以上就是"C++怎么实现简易UDP网络聊天室"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
数据
地址
套接字
结构
长度
信息
服务器
服务
字节
网络
指针
知识
篇文章
主机
字符
顺序
简易
聊天室
C++
一行
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
小米移动互联网科技园
广东猪兼强互联网科技有限公司
互联网电商科技
盈实互联网科技
互联网医疗科技
电子科技大学互联网
亿账通互联网科技
互联网科技网站
成都狮子座互联网科技
佰商互联网科技有限公司
多迪互联网科技有限公司
新华互联网科技校企合作
互联网实体化科技化
互联网科技博主是什么意思
湖北码尼互联网科技有限公司电话
互联网科技与大数据专业
广州市恰铎互联网科技有限公司
互联网科技人工智能实验室
山东有哪些互联网科技公司
互联网科技大佬云集
互联网科技行业发展
互联网为科技
麻工互联网科技
互联网 的科技创新
百单互联网科技有限公司
西安互联网科技公司
上海电发互联网科技有限公司
互联网和高科技公司
互联网科技的前景
恒生科技指数 中概互联网