热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c/c++开发分享c中的udp聊天服务器

我想用c语言编写udp聊天服务器。我以前写过tcp聊天服务器,没关系。在tcp服务器中,accept函数返回一个fd号,服务器根据这个fd号与特定客户端通信。但是在udp中,我怎么

我想用c语言编写udp聊天服务器。 我以前写过tcp聊天服务器,没关系。

在tcp服务器中,accept函数返回一个fd号,服务器根据这个fd号与特定客户端通信。

但是在udp中,我怎么能听一个特定的客户?

在我的tcp服务器中,在客户端连接到服务器之后,创建一个线程并监听该客户端。 因此对于每个客户端,都有一个线程根据从accept函数返回的fd号进行监听。 所以任何消息都可以根据这个fd号发送给特定的客户端。

我怎样才能在udp服务器中实现这一点?

谢谢你的回答。

    您使用recvfrom查找源IP /端口,然后使用sendto进行回复。 您只需要bind以选择服务器端口。 你不accept 。 UDP的所有connect都设置为默认目标(您计划使用sendto覆盖)。

    这很简单。 如你所知UDP是无连接的,它可能共享同一个端口。所以想法就在这里。只需为每个客户端创建线程。如果你有更多的CPU核心,它会很棒。你可以将每个核心用于特定数量的客户端。 (它可以通过map完成)现在当同一个客户端再次敲响时,只需将他发送到该线程和核心。所以如果你有1 … n核心,你必须创建n线程,并为每个线程设置cpu。

    我已经用这种方式对8核心服务器进行了实验,并且工作正常。

    几天之后,我将这些代码放在我的博客上,然后把它解决为千兆交换机.. ?

    matrixsust.blogspot.com

    希望能帮助到你。

    只需创建一个UDP套接字并调用connect()即可。 但你不想这样做。 UDP服务器的全部乐趣在于它们只需要一个套接字。 想一想。 您只需要TCP中的线程,因为您必须拥有专用套接字,而专用线程是最简单(而不是唯一)处理它的方式。 在UDP中,您可以jst继续从同一个套接字读取,源地址告诉您每个图表来自哪个客户端。

    我用recvfrom和sendto函数。 首先,客户端通过sendto向服务器发送消息。 和服务器通过recvfrom接收消息。 在recvfrom中,我通过sockaddr_in struct获取客户端的地址。 在我无法绑定此并使用sendto之后

      以上就是c/c++开发分享c中的udp聊天服务器相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(编程笔记)。


      推荐阅读
      • 深入理解Java虚拟机的并发编程与性能优化
        本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
      • 开发笔记:加密&json&StringIO模块&BytesIO模块
        篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
      • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
      • 关于CMS收集器的知识介绍和优缺点分析
        本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
      • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
      • 嵌入式处理器的架构与内核发展历程
        本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
      • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
        2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
      • ejava,刘聪dejava
        本文目录一览:1、什么是Java?2、java ... [详细]
      • HSRP热备份路由器协议的应用及配置
        本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
      • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
      • c语言基础编写,c语言 基础
        本文目录一览:1、C语言如何编写?2、如何编写 ... [详细]
      • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼*madebyebhrz*#include#include#include#include#include#include#include ... [详细]
      • C语言的经典程序有哪些
        本篇内容介绍了“C语言的经典程序有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何 ... [详细]
      • 初探PLC 的ST 语言转换成C++ 的方法
        自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
      • 华为和阿里VPN
        阿里云创建VPN1、 创建VPN网关2、 填写名称,选择对应的VPC,不指定交换机,选择带宽3、购买的是IPSEC-VPN不开启SSLVPN,点击立即购买 4、 创建客户网关  ... [详细]
      author-avatar
      Kluter
      这个家伙很懒,什么也没留下!
      PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
      Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有