C++怎么实现简易UDP网络聊天室
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,今天小编给大家分享一下C++怎么实现简易UDP网络聊天室的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们
千家信息网最后更新 2025年12月01日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安全错误
数据库的锁怎样保障安全
遵义领信网络技术有限公司
完全自主代码数据库
2016服务器怎么设置两个ip
写数据库都需要什么软件
如何搞到高性能服务器
软件开发人员绩效评价标
网络安全产品广告语
莱山区管理系统软件开发哪家好
气象局网络安全制度
贵港市国家网络安全宣传
中控软件开发教程
云南云空间图片云服务器
山东宽途互联网科技有限公司
软件开发中占多少成本
软件开发交接协议书
服务器 杀毒软件
数据库安全注册
微信小程序账号登录链接数据库
开发软件软件开发
昆明最大的软件开发公司
服务器只能用安全模式进入
属性数据库设计
网络安全产品广告语
甘孜州国家网络安全宣传
软件开发多久能完成
网络安全好看视频
惠普服务器按开机键没反应
后台管理应用服务器
资阳软件开发工作好找吗
网络安全事件可分为哪几类