当前位置: 首页 > news >正文

Udp 和 Tcp socket的一般编程套路(笔记)

一. Udp套路:

        第一步:创建套接字

        第二步:配置服务器地址信息

        第三步:绑定套接字

void init(){_socketfd = socket(AF_INET,SOCK_DGRAM,0);//第一步 创建套接字//AF_INET:使用IPv4协议//SOCK_DGRAM就是数据报// UDP - 不需要建立连接// 直接发送数据,无需connect()struct sockaddr_in addr;//第二步 配置服务器地址信息memset(&addr,0,sizeof(addr));addr.sin_family = AF_INET;addr.sin_port = htons(_port);      addr.sin_addr.s_addr = INADDR_ANY;socklen_t size = sizeof(addr);if(bind(_socketfd,(struct sockaddr*)&addr,size) < 0)//第三步 绑定套接字{LOG(level::FATAL)<<"bind false";exit(1);}LOG(level::INFO)<<"bind success";}

        就可以运行了

 void start(){while(1){char buff[512];struct sockaddr_in addrin;socklen_t sizein = sizeof(addrin);ssize_t n = recvfrom(_socketfd,buff,sizeof(buff)-1,0,(struct sockaddr*)&addrin,&sizein);//从套接字中获取信息if(n > 0){buff[n] = 0;LOG(level::DEBUG)<<buff;std::string message;message = "server say# ";message += buff;ssize_t m = sendto(_socketfd,message.c_str(),message.size(),0,(struct sockaddr*)&addrin, sizein);//从套接字中发送信息}}}

二.Tcp套路:

        1. 创建Socket

        2. 绑定地址

        3. 开始监听

    void Init(){_listenfd = socket(AF_INET,SOCK_STREAM,0);//第一步 获取监听套接字//SOCK_STREAM 数据流if(_listenfd < 0){LOG(level::FATAL)<<"Socket false";exit(SOCKER_ERR);}LOG(level::INFO)<<"socket success "<<_listenfd;Inetaddr saddr(_port);int n = bind(_listenfd,(const struct sockaddr*)&saddr.Getaddr(),sizeof(saddr.Getaddr()));//第二步 绑定服务端if(n == -1){LOG(level::FATAL)<<"bind false";exit(BIND_ERR);}if(listen(_listenfd,defbacklog) < 0)//第三步 监听{LOG(level::FATAL)<<"listen false";exit(LISTEN_ERR);}}

        4. accept 从监听listen fd获取远端的套接字

         while(_Isrunning){struct sockaddr_in peer;//建立远端来接受远端信息socklen_t sz = sizeof(peer);int sfd = accept(_listenfd,(sockaddr*)&peer,&sz);//从监听fd获取远端的套接字if(sfd < 0){LOG(level::ERROR)<<"accept false";exit(ACCEPT_ERR);}LOG(level::DEBUG)<<"accept success "<<sfd;Inetaddr local(peer);//下面是我自己线程的执行,不用理ThreadData* thdata = new ThreadData(sfd,local,this);pthread_t th1;pthread_create(&th1,nullptr,Routine,thdata);}

        

        

http://www.dtcms.com/a/403554.html

相关文章:

  • C++_STL和数据结构《3》_仿函数作为STL中算法参数的用法、匿名函数、序列容器使用、关联容器使用、无关联容器使用、容器适配器使用
  • php基础-流程控制(第12天)
  • 怎样建设尧都水果网站网页游戏网站556pk游戏福利平台
  • logo做ppt模板下载网站简历制作官网
  • LeetCode:51.岛屿数量
  • English Around the House and Farm
  • 目标速度估计中MLE和CRLB运用(二)
  • 沈阳网站建设找思路做区位分析的地图网站
  • 莱芜做网站建设的公司seo交流qq群
  • MongoDB Ops Manager部署
  • DecDEC论文精读:动态误差补偿的低比特LLM推理优化方案
  • 面试复习题--Android的前沿技术
  • 江苏省建设职业中心网站工程招标信息在哪看
  • Go语言环境安装
  • AI-调查研究-86-交感神经 副交感神经 自主神经系统的平衡之道:交感与副交感的利弊解析
  • 重构华尔街交易室:基于大模型的多智能体协作交易系统TradingAgents深度技术解析
  • 每天五分钟深度学习:基于训练集、验证集、测试集迭代模型
  • arXiv 2025 | 多尺度线性注意的混合CNN-Transformer医学分割网络,即插即用,涨点起飞!
  • 青岛北京网站建设公司wordpress 即时联系
  • SpringBoot结合PostGIS在省级旅游口号管理中的应用实践
  • RedisFront:一款免费开源的跨平台Redis客户端工具
  • 数据中心网络架构的“南北向”和“东西向”
  • 法律网站的建设流程免费模板素材软件
  • 支持17种方言10种外语!阿里最新AI语音合成模型Qwen3-TTS-Flash震撼发布
  • Apache Doris性能优化全解析:慢查询定位与引擎深度调优
  • 境外电商网站建设崇州网站建站
  • 可学习性(Learnability)条件:什么样的学习问题是有解的?
  • 动态规划算法初识--斐波那契数列模型
  • Linux网络:使用UDP实现网络通信(网络套接字的创建绑定)
  • 第一次培训