C++ programming: Linux server socket example

Qwen 3.6-Plus代码生成技术解析:AST建模与生产级编程实践 大模型代码生成已从简单文本续写迈入程序语义理解新阶段。其核心原理在于将编程语言视为具备语法树(AST)、控制流图和数据依赖的结构化语言,通过AST解析、图神经网络建模与约束解码实现深度代码理解。这种技术路径显著提升指令遵循鲁棒性与上下文建模精度,带来真实工程价值:生成可直接提交PR的生产就绪代码,覆盖API SDK自动生成、SQL转ORM、遗留系统现代化等高频场景。尤其在中文开发者工作流适配、本地轻量化部署(如Ollama+GGUF)及企业私有化落地上展现出差异化优势,标志着AI编程正从‘能写’迈向‘懂写、 阅读详情
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <arpa/inet.h>

#define TRUE   1
#define PORT 51500

int main(int argc, char *argv[]) {
    int master_sock,
            addrlen,
            new_sock,
            maximum_clients = 30,
            client_sock[maximum_clients],
            act,
            i,
            value_read,
            sock_descriptor,
            maximum_socket_descriptor;
    struct sockaddr_in adr{};

    char buff[1024];  //data buffer of 1K
    fd_set read_fds; //set of socket file descriptors
    char *message = "ECHO Daemon v1.0 \r\n"; //connect notice message

    //initialise all client_sock to 0
    for (i = 0; i < maximum_clients; i++) {
        client_sock[i] = 0;
    }

    //creating a master socket
    if ((master_sock = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
        perror("Failed_Socket");
        exit(EXIT_FAILURE);
    }

    //These are the types of sockets that we have created
    adr.sin_family = AF_INET;//PROTOCOL = IP
    adr.sin_addr.s_addr = INADDR_ANY;//SOURCE ADDRESS = 0.0.0.0/0
    adr.sin_port = htons(PORT);//LISTENING PORT = PORT

    //bind the socket to localhost port
    if (bind(master_sock, (struct sockaddr *) &adr, sizeof(adr)) < 0) {
        perror("Failed_Bind");
        exit(EXIT_FAILURE);
    }

    printf("Port having listener:  %d \n", PORT);

    //Specify 3 as maximum pending connections for master socket
    if (listen(master_sock, 3) < 0) {
        perror("listen");
        exit(EXIT_FAILURE);
    }

    //Accepting the Incoming Connection
    addrlen = sizeof(adr);
    puts("Looking For Connections");

    //*******************************//
    // Here we start using select functions and the macros for multiple client handling

    while (TRUE) {
        //Clearing the socket set
        FD_ZERO(&read_fds);

        //Adding the master socket to the set
        FD_SET(master_sock, &read_fds);
        maximum_socket_descriptor = master_sock;

        //Adding child sockets to set
        for (i = 0; i < maximum_clients; i++) {
            //Descriptor for Socket
            sock_descriptor = client_sock[i];

            //if the socket descriptor is valid then adding it to the read list
            if (sock_descriptor > 0) {
                FD_SET(sock_descriptor, &read_fds);
            }

            //Highest File Descriptor Number which is needed for the select function
            if (sock_descriptor > maximum_socket_descriptor) {
                maximum_socket_descriptor = sock_descriptor;
            }
        }

        //Waiting for something to happen on the master socket. As the wait time is NULL the wait is indefinite
        act = select(maximum_socket_descriptor + 1, &read_fds, nullptr, nullptr, nullptr);
        if ((act < 0) && (errno != EINTR)) {
            printf("Failed_Select");
        }

        //Any activity on the master socket is treated as an incoming connection
        if (FD_ISSET(master_sock, &read_fds)) {
            if ((new_sock = accept(master_sock, (struct sockaddr *) &adr, (socklen_t *) &addrlen)) < 0) {
                perror("Accept!");
                exit(EXIT_FAILURE);
            }

            //Informing the user of the socket number which will be sued to send and receive messages
            printf("This is a New Connection,The socket file descriptor is %d and the IP is : %s on Port : %d\n",
                   new_sock,
                   inet_ntoa(adr.sin_addr),
                   ntohs(adr.sin_port));

            // Sending Greeting Message on New Connection
            if (send(new_sock, message, strlen(message), 0) != strlen(message)) {
                perror("Send!!");
            }
            puts("Welcome Text Sent Affirmative.");

            // Adding new socket to the array of sockets
            for (i = 0; i < maximum_clients; i++) {
                // Checking if the position is empty
                if (client_sock[i] == 0) {
                    client_sock[i] = new_sock;
                    printf("Adding new socket to the list of sockets as %d\n", i);
                    break;
                }
            }
        }

        //If not the master socket then it is some i/o activity on some other socket
        for (i = 0; i < maximum_clients; i++) {

            sock_descriptor = client_sock[i];
            if (FD_ISSET(sock_descriptor, &read_fds)) {

                //Checking if the activity was for closing and reading the incoming message
                if ((value_read = read(sock_descriptor, buff, 1024)) == 0) {

                    //If someone disconnected, getting their details and printing a message
                    getpeername(sock_descriptor, (struct sockaddr *) &adr, (socklen_t *) &addrlen);

                    printf("Disconnected Host. Their , IP %s and PORT %d \n",
                           inet_ntoa(adr.sin_addr), ntohs(adr.sin_port));

                    //Closing the socket and marking it as 0 in the list to be reused
                    close(sock_descriptor);
                    client_sock[i] = 0;
                } else {
                    //Setting the string terminating NULL byte on the end of the data that is read
                    buff[value_read] = '\0';
                    //Echoing back the message that came in the socket
                    send(sock_descriptor, buff, strlen(buff), 0);
                }
            }
        }
    }
    return 0;
}
【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04 编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017) 阅读详情

相关推荐

【信息科学与工程学】【通信工程】计算机科学与自动化——第二百三十三篇 云NaaS服务 系列二02

字段内容类型​云网络自定义路由表(Custom Route Table):允许用户自定义 VPC 或子网的路由规则,控制流量走向,支持黑白名单、策略路由。端计算节点->边缘计算节点->边缘DC->中心云的网络情况及存储需求及配置情况列表​端计算节点为 VPC 内的云资源。边缘计算节点不适用。边缘 DC 和中心云为路由表管理平台。存储需求:路由条目存储于数据库。网络:路由表在虚拟路由器中执行。QoS:无。网络的端到端配置(从接入到汇聚到核心)​。

weixin_49199313的博客 327

C Socket Programming for Linux with a Server and Client Example Code

Typically two processes communicate with each other on a single system through one of the following inter process communication techniques. Pipes Message queues Shared memory There are se...

dingxiu8587的博客 228

【 ‌infrastructure】【数据中心】【AI infra】第十篇 智能计算数据中心解决方案集成测试和交付知识体系1005

路由协议需要同时处理动态拓扑(LEO)和静态拓扑(GEO),BGP 的收敛速度无法跟上 LEO 切换(秒级),而 OSPF 的 LSDB 更新过于频繁。mode 4(LACP)需要交换机支持,mode 0(round-robin)可能乱序,mode 2(active-backup)带宽利用率低。使用 DCB(Data Center Bridging)配置 PFC 优先级映射,将 RoCE 流量映射到高优先级(3 或 4),其他流量低优先级。或者使用异步 NVMe-oF,允许命令排队,容忍延迟。

weixin_49199313的博客 75

C 语言快速参考备忘清单:从基础语法到 Socket 网络编程的完整速查(Reference 项目 docs/c.md)

> 本文以开源仓库 jaywcjlove/reference(为开发人员分享快速参考备忘清单【速查表】的项目)中的 [C 备忘清单](https://link.gitcode.com/i/97b160ee1aca359010fcb5dc00ab4a4c) 为骨架,系统梳理 C 语言的基本语法、运算符、数据类型、预处理器、函数、结构体、文件处理、Socket 网络编程与 I/O 多路复用等核心知识点

gitblog_00953的博客 663

【ANSYS APDL】提取结构刚度矩阵完整过程--附Python代码实现

ANSYS的结构刚度矩阵提取中一些操作技巧

m0_61038364的博客 1万+

GD-Link离线烧录全攻略:从配置到一键下载的保姆级教程

本文详细介绍了GD-Link离线烧录的全流程,从硬件准备到软件配置,再到一键下载的实战技巧。通过保姆级教程,帮助工程师快速掌握国产MCU的离线烧录技术,适用于产线批量烧录和现场设备维护等场景,显著提升工作效率。

ww90123的博客 649

C++AI编译错误自动修复神器-告别手动Debug的终极方案

在日常 C++ 开发中,编译错误是最频繁遇到的障碍之一。一个中等规模的项目在重构期间,一次 可能产生数十甚至上百条错误信息。这些错误往往具有级联效应——一个头文件的拼写错误可能导致下游十几个翻译单元同时报错,而真正需要修改的地方只有一处。传统的工作流是: 这个循环对于经验丰富的开发者来说尚可接受,但对于以下场景则效率极低:优势:局限:本项目最适合以下场景:阅读

weixin_48053866的博客 279

Android车载应用开发:Kotlin与Automotive OS深度实践

Android Automotive OS(AAOS)是Google专为车辆设计的操作系统,直接运行于车机硬件,提供完整的车载信息娱乐系统(IVI)。与Android Auto不同,AAOS允许开发者深度集成车辆硬件功能,如空调控制和传感器数据读取,同时遵循严格的驾驶安全规范。Kotlin作为开发语言,具备空安全设计、扩展函数和协程支持等优势,简化了开发流程。开发环境配置包括Android Studio、AAOS模拟器和Gradle配置,核心组件如CarAppService、Screen与模板系统,以及车辆

时小雨的专栏 3443

MYSQL 网络连接

assert(mp!= nullptr);#endif首先断言mp非空。为结构体动态分配内存,并将指针赋给。调用来初始化这个安全互斥锁,同时传入源文件名和行号。内部通常会:再调用初始化真正的原生互斥体。记录锁的创建位置、线程 ID 等信息,以便在死锁检测、锁定顺序检查或错误报告时提供调试信息。这种模式主要用于调试版本,帮助开发者发现互斥锁使用问题(如重复锁定、死锁、未释放等)。#else#endif直接调用初始化中的原生互斥体(例如或 Windows 的。

Piemon&Anokata的博客 497

Keil5保姆级安装指南:从破解到STM32开发环境配置(附常见错误解决方案)

本文提供Keil5从安装到STM32开发环境配置的完整指南,包含破解步骤、常见错误解决方案及多芯片支持配置。详细讲解环境预检、核心安装、许可证管理及高效开发环境设置,帮助开发者快速搭建嵌入式开发平台。特别针对安装和卸载过程中的关键问题提供专业解决方案。

weixin_30369041的博客 124

轴承寿命预测 | 基于BiLSTM双向长短期记忆神经网络的轴承寿命预测附matlab完整代码

轴承寿命预测 | 基于BiLSTM双向长短期记忆神经网络的轴承寿命预测附matlab完整代码

默默科研仔的博客 273

开源代码评审工作流:LLM+CLI驱动的结构化CR实践

代码评审(Code Review)是保障软件质量的核心工程活动,其本质是基于上下文的风险识别与设计决策验证。传统人工评审面临标准不统一、重复检查耗时、新人参与度低等痛点,而大语言模型(LLM)的引入需兼顾可解释性、可控性与可审计性。本文聚焦‘结构化评审’这一基础范式,强调通过 CLI 工具链实现 Git Diff 的语义解析、多粒度上下文注入、规则引擎与轻量 LLM 的协同推理,并将评审逻辑沉淀为 YAML 配置——即‘评审即代码(Review-as-Code)’。该方案不依赖黑盒 Agent 或复杂 Em

weixin_28831461的博客 230

基于非接触式微波雷达设计的睡眠监控系统_323

本项目设计了一种基于非接触式微波雷达的睡眠监控系统,通过高精度的生理信号采集与分析,帮助用户全面了解自身的睡眠状态和健康状况。系统采用60GHz频段的R60ABD1毫米波雷达模块,实现对人体呼吸频率、心率、活动状态、体动幅度等参数的非接触式测量;结合MLX90614红外体温传感器,能够实时监测人体体温。此外,系统通过蜂鸣器报警和数据上云功能,及时向用户反馈异常生理指标,确保健康风险早期预警。数据通过ESP8266-WIFI模块上传至华为云物联网平台,用户可通过Android手机APP和Windows上位机远

498

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

(二)OpenClaw-连接即时通讯平台-集成飞书完整配置指南

本文详细介绍了如何将OpenClaw与飞书机器人对接,实现通过飞书聊天窗口下达指令自动执行任务的高效协作模式。主要内容包括:1)OpenClaw服务部署验证和飞书账号准备;2)在飞书开放平台创建企业自建应用、添加机器人能力、获取凭证和开通必要权限;3)OpenClaw服务端的首次配置,包括设置飞书通道参数和启动长连接。文章提供了完整的操作步骤和截图指引,帮助用户快速完成对接配置,实现AI自动化助手功能。

直到世界的尽头 2246

2、Elixir与Erlang:构建高可用系统的利器

本文介绍了Elixir与Erlang在构建高可用系统方面的优势,深入探讨了Erlang的并发机制、容错能力以及分布式特性,并结合实际应用场景展示了其在服务器端开发中的强大能力。此外,还提供了学习资源和交流平台,帮助开发者快速上手并深入实践。

grape的博客 124

从零开始安装与使用pwntools:二进制安全与漏洞利用的Python利器

在二进制安全与漏洞利用领域,Python作为一种高效灵活的脚本语言,常被用于自动化安全测试与漏洞利用脚本的编写。其核心原理在于通过封装底层系统调用与网络通信,为安全研究人员提供了一套简洁的API接口,极大地提升了漏洞分析与利用的开发效率。这一技术价值在CTF竞赛、软件安全评估及漏洞研究中尤为突出,能够帮助开发者快速构建交互式攻击载荷、解析二进制文件信息以及自动化定位漏洞偏移。pwntools正是这一理念下的杰出实践,它是一个专为漏洞利用和二进制分析设计的Python框架,将繁琐的进程交互、数据打包和地址计算

weixin_34357436的博客 387

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

脑语言2500单字v1.5.1

如果人和 AI 说同一种语言,文明会怎样?我用 2500 个单字试了试。2500个单字是不同领域、不同知识的共同体,无论你学编程或者是数学或写作,你都要用汉字,而常用的2500个汉字几乎可以涵盖不同行业做的不同事情。

脑语言 2000

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

深挖C++:类和对象(中)

(先进后出)

xys_678的博客 186

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

选型笔记:Type‑C 扩展坞方案评估|DP1.4 转 HDMI2.0 桥接芯片 GSV2201S@ACP

本文记录 GSV2201S 这款 DP1.4a 转 HDMI2.0 桥接芯片评估,梳理视频、HDCP、PD 集成能力,总结 Type‑C 转接 Dongle、扩展坞方案的适配边界,以及差分走线、PD 时序、HDCP 握手等高频调试问题,为 C 口视频转接方案选型提供参考。

ACP广源盛的博客 217

C++移动构造函数详解

移动构造函数是C++11引入的一种特殊构造函数,用于从临时对象(右值)"窃取"资源来初始化新对象,而不是进行昂贵的深拷贝。char* data;public:// 移动构造函数:参数是右值引用 &&// 关键:把源对象的资源置空。

拒绝AI文,努力在AI时代写出感动人心的好文章 385

ThunderKittens 深度解析:一个不基于 MLIR 的 C++ 模板 GPU DSL

Triton 是"让更多人能写 GPU kernel",ThunderKittens 是"让会写的人写得更爽"。前者用 MLIR 换易用性,后者用 C++ 模板换可控性。它们不是替代关系,而是覆盖了 GPU 编程光谱的两端。ThunderKittens 的出现,本质上是对"GPU DSL 必须基于 MLIR"这一默认假设的挑战。编译期类型系统本身就可以是一个强大的 DSL 基础设施,不需要中间 IR,不需要黑盒 pass,也能实现 tile 级抽象和零运行时开销。

Maxwell_Newton的博客 332

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析

蓝桥杯报名正在火热进行(软件赛报名 2026-10-08—12-18,省赛 2027-04-10),电子学会 12 月软件编程(C/C++ 一级至十级、Python 一级至六级)考级报名也已开启(9/23—12/2),全国青少年信息素养大赛算法应用主题赛同步推进——把 LCA 这个模板练熟,正是冲刺这些赛事树型考点的关键一步。所谓「最近公共祖先」:在一棵以某个节点为根的树里,两个节点 u、v 向上追溯,最早交汇的那个祖先就叫它们的 LCA。比如家谱里,你和你表哥最近的共同长辈就是你们的祖父。

IT_Scratch的博客 532

【C语言】字符与字符串函数

C语言中字符串为以\0结尾的字符数组,标准库函数基于此约定。本文解析字符串内存布局,详解ctype.h与string.h中字符分类、长度计算、拷贝、比较等函数的使用要点,强调长度判断与越界风险,最后通过命令行待办事项示例整合fgets、sscanf、strncpy、strcmp,展示实际应用中的关键细节。

记录在学习过程中学到的知识 340

C++ 多态详解:作用、原理与实战用法

多态是C++面向对象的核心特性,通过虚函数实现运行期动态绑定,使同一接口在不同对象上表现出不同行为。其核心作用包括统一接口、提升可扩展性、降低耦合、支持运行时分派与批量处理。实现依赖虚函数表(vtable)和虚指针(vptr),需注意虚析构函数、对象切片等陷阱。相比编译期多态(模板),运行期多态灵活性高但有调用开销。合理结合两者,可兼顾代码的灵活性与性能,是构建可扩展、低耦合系统的关键。

2402_85743155的博客 376

C++ 函数模版

模板参数:● template ,T 就是类型占位符,名字可以自定义,习惯用T● 占位符可以在函数返回值、形参、函数内部当作类型使用使用要点模板代码一般写在头文件:编译器需要看到完整模板源码,才能在每个编译单元完成实例化全局函数、类内成员函数都可以写成模板实例化发生在编译阶段,不是运行时隐式实例化:调用时编译器自动推导实参类型,生成对应版本函数。

2501_94041724的博客 300
上一篇: Ethernet Type Codes
下一篇: C programming: sniffer with winpcap
相信光的疯子
博客等级 码龄18年 91粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值