#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define BUFF_SIZE 1024
//错误输出
void error_handing(char*message)
{
fputs(message, stderr);
exit(1);
}
//信号处理函数,读取子进程进程号
void read_childproc(int sig)
{
pid_t pid;
int status;
pid = waitpid(-1, &status,WNOHANG);
printf("removed proc id is : %d\n", pid);
}
int main()
{
//初始化信号和相关变量即buff
char buff[BUFF_SIZE];
pid_t pid;
struct sigaction act;
act.sa_handler = read_childproc;//绑定信号处理函数
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
sigaction(SIGCHLD, &act, 0);//绑定信号SIGCHLD(子进程状态改变信号)和处理函数read_childproc
uint16_t port;
//1、创建服务器套接字
int ser_socket = socket(PF_INET, SOCK_STREAM, 0);
//2、绑定服务器信息
struct sockaddr_in ser_addr;
memset(&ser_addr, 0, sizeof(ser_addr));
ser_addr.sin_family = AF_INET;
ser_addr.sin_addr.s_addr = htonl(INADDR_ANY);
ser_addr.sin_port = htons(port);
int ser_addrLen = sizeof(ser_addr);
if(bind(ser_socket, (struct sockaddr*)&ser_addr, sizeof(ser_addr)) == -1)
{
error_handing("bind() error");
}
//3、监听客户端连接, 5个
if(listen(ser_socket, 5) == -1)
{
error_handing("listen() error");
}
//4、初始化客户端相关信息
int cli_socket;
struct sockaddr_in cli_addr;
memset(&cli_addr, 0, sizeof(cli_addr));
int cli_addrLen = sizeof(cli_addr);
//5、处理连接和创建子进程
while(1)
{
cli_socket = accept(ser_socket, (struct sockaddr*)&cli_addr, &cli_addrLen);
if(cli_socket == -1)
{
continue;
}
else{
printf("new client connected\n");
}
//6、为新连接客户端创建子进程
pid = fork();
if(pid == -1)//进程创建失败
{
close(cli_socket);
continue;
}
else if(pid == 0)//子进程运行区域
{
close(ser_socket);
while(read(cli_socket, buff, BUFF_SIZE) != 0)
{
char*buf = "I am SERVER";
write(cli_socket, buf, sizeof(buf));
}
close(cli_socket);
puts("client disconnected>>>>");
return 0;
}
else
close(cli_socket);
}
close(ser_socket);
return 0;
}
相关推荐
epoll并发服务器的实现
C语言epoll实现并发聊天服务器
UDP并发服务器之多进程并发
在网络程序里面,通常都是一个服务器处理多个客户端。为了处理多个客户端的请求, 服务器端程序有不同的处理方式。
大并发服务器的多线程与并发服务器设计: 常见并发服务器方案
1.循环式/迭代式服务器: 无法充分利用多核CPU,不适合执行时间较长的服务,即适用于短连接(这样可以处理多个客户端),如果是长连接则需要在read/write之间循环,那么只能服务一个客户端。 所以循环式服务器只能使用短连接,而不能使用长链接,否则无法处理多个客户端的请求,因为整个程序是一个单线程的应用程序,如果a的处理请求不能断开(使用长链接) 那么下一个客户端的请求将不能连接上。因为是单线程...
500并发的服务器要求性能,500个并发服务器要什么配置
500个并发服务器要什么配置 内容精选换一换多个用户同时通过ssh登录堡垒机管理下的任一服务器时,允许登录的帐号数有上限,当登录的帐号数超出上限值时,必须退出一个帐号才能再登录一个账号。该问题是由于并发数限制导致的。云堡垒机支持100、200、500、1000、2000、5000资产规格配置,不同规格云堡垒机的并发数配置有差异,不同的资产规格的配置差异请参见服务版本差异。建议您扩容压测是需要模拟用...
TCP并发服务器设计
TCP并发服务器是通过创建子进程来处理不同客户端的请求实现的 server.c /* ** TCP并发服务器 */ #include #include #include #include #include #include #include #include #define portnumber 3333 int main( int argc, cha
电池管理系统(BMS)系列—状态估计之SOH
BMS系列文章,介绍了SOH估计
什么是服务器并发量?并发量如何计算?
服务器并发量分为:1.业务并发用户数;2.最大并发访问数;3.系统用户数;4.同时在线用户数; 并发的意思是指网站在同一时间访问的人数,人数越大,瞬间带宽要求更高。服务器并发量分为:1.业务并发用户数;2.最大并发访问数;3.系统用户数;4.同时在线用户数; 假设一个OA系统有1000用户,这是系统用户数;最高峰同时有500人在线,是“同时在线人数”,也称作“最大业务并发用户数”;500个同时使...
07- Rossmann商店销售预测 (Xgboost集成算法) (项目七)
Rossmann在欧洲国家经营着3000多家日化用品超市。目前,Rossmann商店经理的任务是提前6周预测他们的日销售额。商店的销售受到许多因素的影响,包括促销、竞争、学校和国家假日、季节性和地域性。由于数以千计的管理者根据自己的特殊情况预测销售,结果的准确性可能会有很大的差异。 因此使用机器学习算法对销量进行预测,Rossmann要求预测德国1115家商店的6周日销售额。可靠的销售预测使商店经理能够制定有效的员工时间表,提高生产力和积极性。
1000并发的系统服务器配置,1000人并发服务器配置
1000人并发服务器配置 内容精选换一换多个用户同时通过ssh登录堡垒机管理下的任一服务器时,允许登录的帐号数有上限,当登录的帐号数超出上限值时,必须退出一个帐号才能再登录一个账号。该问题是由于并发数限制导致的。云堡垒机支持100、200、500、1000、2000、5000资产规格配置,不同规格云堡垒机的并发数配置有差异,不同的资产规格的配置差异请参见服务版本差异。建议您扩容思考时间可选配置。为...
电力电子技术复习笔记
通常在开关过程前后加入谐振,使开关开通前电压先降到0,关断前电流先降到0,消除开关过程电压、电流的重叠,降低它们的变化率,从而大大减小甚至消除开关损耗。小信号线性化模型的原理:忽略开关频率分量和开关频率谐波分量及其边频分量,建立占空比、输入电压等的低频扰动对变换器中的电压、电流影响的模型。解:可以利用变压器的变比改变输出电压大小,避免控制过程的占空比过小或过大,提高控制精度,同时有利于减轻输出电路中电力电子器件的耐压要求。驱动电路:用于控制功率半导体器件的开关,从而控制电路的电流和电压。
PMD相位偏折术实战:如何用Python处理条纹图,让金属外壳的划痕无处遁形
本文详细介绍了PMD相位偏折术在金属外壳划痕检测中的应用,通过Python实现条纹图处理和局部特征增强技术,显著提升微小缺陷的检出率。文章涵盖从四步相移条纹图采集到形状图局部增强的完整流程,特别适合工业质检场景,帮助实现高精度、高效率的自动化检测。
单台服务器:最大并发,最大线程,并发选择
目录 单台服务器:最大并发/TCP连接数 端口角度: 资源角度:内存 + CPU 查看设置最大并发: 单台服务器:最大线程 CPU相关: 内存相关: 单台服务器:最大并发/TCP连接数 参考:http://www.sohu.com/a/289028571_371153 端口角度: 有的朋友可能会说是65535,因为操作系统有65535个端口,那么这个答案准确吗?凭什么认为一个端口同一时刻只能接收一个请求? 逆向思考:若同一时刻只能接收一条请求,那你的项目端口肯定是固定...
YOLOv8+SAM强强联合:用分割“喂“检测,复杂背景下作物AP从72%干到77.7%,杂草误检降60%
目标与背景高度相似:如农业(作物vs杂草)、工业(零件vs台面)、医学(病灶vs正常组织);遮挡严重的场景:如密集人群(人被遮挡)、森林(树木被枝叶遮挡);小目标密集场景:如无人机航拍(远处小目标易混背景)。
1000并发的系统服务器配置,1000并发服务器配置
1000并发服务器配置 内容精选换一换多个用户同时通过ssh登录堡垒机管理下的任一服务器时,允许登录的帐号数有上限,当登录的帐号数超出上限值时,必须退出一个帐号才能再登录一个账号。该问题是由于并发数限制导致的。云堡垒机支持100、200、500、1000、2000、5000资产规格配置,不同规格云堡垒机的并发数配置有差异,不同的资产规格的配置差异请参见服务版本差异。建议您扩容简要介绍Erlang是...
一根同轴线,真的扛得住 4K 吗? ——从摄像头带宽算起,聊透车载 SerDes 接口选型
如果你记住这三句话,这篇文章就值了:🎯摄像头带宽 = 分辨率 × 位深 × fps × 开销4K RAW 摄像头 ≈ 3.7Gbps,是现实不是理论SerDes 选型,宁可多留 20%,不要刚刚好。
一、OpenSM 架构部署及原理详解
OpenSM 是 InfiniBand 网络的核心组件,通过自动化的拓扑发现、路由计算和状态维护,确保网络的高效运行。部署时需关注配置文件参数、路由算法选择和高可用性设计,调试时可借助日志和诊断工具快速定位问题。
TCP并发服务器
子进程创建:父进程在接收到客户端连接请求后,使用fork()创建子进程来处理该客户端的通信。子进程回收:父进程可以通过wait()或waitpid()回收子进程,也可以通过信号处理函数来非阻塞回收已退出的子进程。文件描述符限制:多进程模型可能会受到系统文件描述符限制的影响,解决方法包括增加文件描述符限制、使用线程池或连接池等技术来减少文件描述符的占用。通过父进程监听和创建子进程来处理每个客户端的请求,使用fork创建子进程,在子进程中负责数据收发,父进程关闭新文件描述符,子进程关闭旧文件描述符。
STM32实战开发(110):基于STM32的智能地震监测系统开发
地震监测系统是自然灾害预警体系中至关重要的一部分。随着地震灾害的频发和对自然灾害预测精度要求的提高,智能地震监测系统逐渐成为研究的热点。STM32作为一款高性能的微控制器,凭借其强大的处理能力和丰富的外设接口,在地震监测领域中得到了广泛应用。本篇文章将详细介绍如何使用STM32实现一个智能地震监测系统的开发过程,涵盖硬件设计、软件编程、系统实现及相关代码。通过集成加速度传感器、地震数据采集、实时数据处理和无线数据传输功能,我们可以设计一个高效、稳定的智能地震监测系统。
并发服务器之多进程并发
解决的⽅法是服务器(知名端⼝)等待⼀下客户的到来,当⼀个客户到来后,记下其 IP 和 port,然后同理,服务器 fork ⼀个⼦进程,建⽴⼀个 socket 再 bind ⼀个随机端⼝,然后建⽴与客户的连接,并处理该客户的请求。问题在于每个客户都是往服务器端的同⼀个的端⼝发送数据,并⽤的同⼀个 sockfd。并发服务器的每⼀个⼦进程如何正确区分每⼀个客户的数据报(涉及到进程的调度问题,如何避免⼀个⼦进程读取到不该它服务的客户发送来的数据报)。并发服务器是指在同⼀个时刻可以响应多个客户端的请求。
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
高并发服务器的限制有哪些,如何提高并发量
高并发服务器的限制有哪些,如何提高并发量
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
服务器的并发数
一:服务器并发数取决于那些? 1.CPU 处理性能 CPU 核数,假如 CPU有4个核,处理每个访问请求用线程去处理,那么4核每次最大能处理不超过8个线程,处理时间看单个线程处理完数据的时间,假如一个线程处理时间是40ms(毫秒),那么最高秒级并发计算那就是 1000/40*8=200 那么每秒最高处理并发是200个,如果服务器只收不处理数据的话处理时间还能大幅度下降, 并发数还鞥你大幅度提...
RU DOS版、EFI版32bit/64bit BIOS常用工具
DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。
服务器并发处理能力
序: 这里指的服务器是指提供HTTP服务的服务器,人们通常衡量一台web服务器能力的大小为其在单位时间内能处理的请求数的多少。 3.1 吞吐率 Web服务器的吞吐率是指其单位时间内所能处理的请求数。更关心的是服务器并发处理能力的上限即最大吞吐率。 Web服务器在实际工作中,其处理的Http请求包括对很多不同资源的请求即请求的url不一样。正因为这种请求性质的不同,W
linux高并发服务器
使用多进程并发服务器时要考虑以下几点:父进程最大文件描述个数(父进程中需要close关闭accept返回的新文件描述符)系统内创建进程个数(与内存大小相关)进程创建过多是否降低整体服务性能(进程调度)
服务器并发
1. 单线程 / 进程 在 TCP 通信过程中,服务器端启动之后可以同时和多个客户端建立连接,并进行网络通信,但是在介绍 TCP 通信流程的时候,提供的服务器代码却不能完成这样的需求,先简单的看一下之前的服务器代码的处理思路,再来分析代码中的弊端: // server.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <arp
1364



被折叠的 条评论
为什么被折叠?



