#include "header.h"
typedef struct sockaddr SA;
#define MAXLINE 1024
int main(void)
{
int listen_fd,connect_fd;
struct sockaddr_in server_addr,client_addr;
socklen_t length;
char buf[MAXLINE];
fd_set rdfs;
if((listen_fd = socket(AF_INET,SOCK_STREAM,0)) == -1)
{
perror("socket fail");
exit(-1);
}
memset(&server_addr,0,sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8000);
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
if(bind(listen_fd,(SA *)&server_addr,sizeof(server_addr)) == -1)
{
perror("bind fail");
exit(-1);
}
if(listen(listen_fd,10) == -1)
{
perror("listen fail");
exit(-1);
}
int i;
memset(buf,'\0',sizeof(buf));
while(1)
{
FD_ZERO(&rdfs); //设置监听读写文件的描述符集合,仅在第一次调用select时有效
FD_SET(STDIN_FILENO,&rdfs);
FD_SET(listen_fd,&rdfs);
printf("select before\n");
if(select(listen_fd+1,&rdfs,NULL,NULL,NULL) < 0) //轮询
{
perror("select fail");
exit(-1);
}
printf("select after\n");
for(i = 0; i <= listen_fd;i++)
{
if(FD_ISSET(i,&rdfs))
{
if(i == STDIN_FILENO)
{
fgets(buf,sizeof(buf),stdin);
printf("receive from stdin %s",buf);
}
if(i == listen_fd)
{
length = sizeof(client_addr);
if((connect_fd = accept(listen_fd
,(SA *)&client_addr
,&length)) == -1)
{
perror("accept fail");
}
printf("connect from client IP %s"
,inet_ntoa(client_addr.sin_addr));
printf("client port %d\n",ntohs(client_addr.sin_port));
memset(buf,'\0',sizeof(buf));
read(connect_fd,buf,sizeof(buf));
printf("read from client:%s\n",buf);
}
}
}
close(connect_fd);
}
close(listen_fd);
}相关推荐
Linux 系统应用编程——网络编程(服务器模型)
在网络通信过程中,服务端通常需要处理多个客户端。由于多个客户端的请求可能会同时到来,服务器端可采用不同的方法来处理。总体上来说,服务器端可采用两种模型来实现:循环服务器模型和并发服务器模型。 循环服务器模型是指服务器端依次处理每个客户端,直到当前客户端的所有请求处理完毕,再处理下一个客户端。这类模型的优点是简单,缺点显而易见。特别是TCP循环服务器模型,由于必须先处理完当前客户端
怎么用c语言实现读取一个txt文件里的数据 要按行读出来
打开文件 fopen("需要打开的路径") 然后使用fgets函数读取行 #include #include #include #define MAX_LINE 1024 int main() { char buf[MAX_LINE]; /*缓冲区*/ FILE *fp; /*文件指针*/ int len; /*行字符个数*/
采用TCP网络编程实现客户服务器一对多的交流
利用TCP网络编程,实现一对多的信息交流
程序与进程
#include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <sys/wait.h> #define MAXLINE 1024int main() { char buf[MAXLINE]; pid_t pid; int status; int status;
FIFO Generate IP核使用——FIFO写操作详解及Status Flags页配置
本文介绍了FIFO的写操作及Status Flags页的配置信息。
【LLM】ms-Swift框架下SFT与GRPO协同优化的高效训练策略
本文深入探讨了ms-Swift框架下监督微调(SFT)与群组相对策略优化(GRPO)的协同训练策略,提升大型语言模型(LLM)的性能与效率。通过创新的架构设计和两阶段训练流程,结合GRPO的群组奖励估计与动态基线调整技术,显著优化了数学推理等任务的准确率。文章还分享了计算资源高效利用和参数调优的实战经验,为LLM训练提供了实用指导。
并发服务器和循环服务器
服务器模型 在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求, 对服务端的程序就提出了特殊的要求。目前最常用的服务器模型有: • 循环服务器:服务器在同一个时刻只可以响应一个客户端的请求 • 并发服务器:服务器在同一个时刻可以响应多个客户端的请求 UDP循环服务器 UDP循环服务器的实现方法:UDP服务器每次从套接字上读取一个客户端的请求->处理
从气象预报到物流规划:多尺度地理加权回归(MGWR)在ArcGIS Pro中的实战应用
本文深入探讨了多尺度地理加权回归(MGWR)在ArcGIS Pro中的实战应用。通过对比传统GWR模型,MGWR的核心优势在于能识别不同解释变量的独特空间作用尺度,有效解决空间异质性问题。文章结合气象预报误差修正与物流网点选址两个案例,详细讲解了从数据准备、参数设置、带宽优化到结果解读的全流程,为地理数据分析师处理复杂空间数据提供了强大工具。
IO多路复用、服务器模型
通过epoll_ctl将文件描述符交给内核监管,一旦fd就绪,内核就会采用callback的回调机制来激活该fd,epoll_wait便可以收到通知(内核空间到用户空间的拷贝。内核空间负责轮询监视结构体数组内的文件描述符,将发生事件的文件描述符拷贝到用户空间,再次调用poll,如此循环。内核空间负责轮询监视表内的文件描述符,将发生事件的文件描述符拷贝到用户空间,再次调用select,如此循环。poll不需要构造文件描述符表(也不需要清空表),采用结构体数组,每次也需要从用户空间拷贝到内核空间。
数据库存储分层架构搭建:热数据 SSD 存储、冷数据归档的配置操作及性能对比分析
本文探讨了数据库存储分层架构的优化策略。随着数据量激增,传统单一存储模式面临成本与性能的平衡难题。文章提出通过热数据SSD加速和冷数据归档降本的分层方案,系统分析了热数据SSD配置、冷数据归档操作及性能对比。分层架构基于数据活跃度匹配存储介质,使热数据保持高性能访问,冷数据低成本存储,实现总体成本降低60%-80%的同时确保核心查询性能。文中详细介绍了硬件选型、数据库配置、数据迁移等技术细节,并强调了动态调整分层策略的重要性,为构建高效经济的数据库存储体系提供了完整解决方案。
如何给K8S配置一个具有永久有效的kubeconfig
在 Amazon EKS 环境中,Kubernetes 的认证机制与 AWS IAM 深度集成,通过aws-iam-authenticator动态生成临时凭证。这种设计虽然增强了安全性,但给需要持久化凭证的工具链(如 CI/CD 系统中的 KubeVela)带来了挑战。具体表现为:临时凭证失效:默认 Token 有效期为 15 分钟至 1 小时;IAM 角色限制:直接使用aws eks get-token生成的凭证无法持久化
linux客户端服务端模型,Linux操作系统网络服务器模型分享
所谓并发服务器就是在同一个时刻可以处理来自多个客户端的请求;循环服务器是指服务器在同一时刻只可以响应一个客户端的请求。而且对于TCP和UDP套接字,这两种服务器的实现方式也有不同的特点。1、TCP循环服务器: 首先TCP服务器接受一个客户端的连接请求,处理连接请求,在完成这个客户端的所有请求后断开连接,然后再接受下一个客户端的请求。创建TCP循环服务器的算法如下:复制代码代码如下:socket(...
高通平台WIFI学习-- 基于6GHZ Discovery (STA Scanning)讲解
本文介绍了6GHz频段的网络扫描优化方案。主要内容包括:1)带内发现机制,将6GHz信道分为优先扫描信道(PSC)和非PSC信道,规范了STA发送探测请求的条件及等待时间;2)带外发现机制,通过RNR信息元素实现跨频段AP发现,减少6GHz频段干扰;3)具体扫描流程示例,包括DBS扫描和敏捷扫描的顺序安排。方案通过优化探测请求发送规则和跨频段信息共享,有效降低了信道污染和扫描延迟,日志数据验证了6GHz信道扫描的具体实现过程。
网编(服务器)
(根据poll函数第一个参数来定,如果监听的事件为1个,则结构体数组元素个数为1,如果想监听100个,那么这个结构体数组的元素个数就为100,由程序员自己来决定)异步I/O,Epoll当有事件产生被唤醒之后,文件描述符主动调用callback(回调函数)函数直接拿到唤醒的文件描述符,不需要轮询,效率高。机制,将新连接的客户端描述符增加到描述符表中,只需要一个线程即可处理所有的客户端连接,在嵌入式开发中应用广泛,不过代码写起来稍显繁琐。监听的最大的文件描述符没有个数限制(理论上,取决与你自己的系统)
使用Matlab实现海洋监视雷达检测仿真
海洋监视雷达是一项重要的海洋探测技术,可以用于海上船只、飞机、潜艇等目标的探测和监视,具有广泛的应用价值。本篇文章将介绍如何使用Matlab进行海洋监视雷达的检测仿真,并提供相应的源代码。本篇文章提供了利用Matlab进行海洋监视雷达检测仿真的基本思路和代码实现。读者可以根据自己的需求进行修改和优化,以适应不同的应用场景。使用Matlab实现海洋监视雷达检测仿真。
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
Linux:C/Socket多路复用select(转)
作一个tcp的服务程序,同时可能有大量的客户端连上来,希望分别记住各个socket 谁有数据过来,就读出来,放到一个请求队列--这些事情用一个线程完成 另外有一个结果队列,如果结果里包含了socket的编号,用一个线程专门: 取出来按编号找回原来发送者socket,发回给原来的客户端 还有一个就是处理线程(池),它取出请求队列里的一个请求,进行处理, 把处理结果放入结果队列 不知道有没
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
TCP、UDP服务器模型
在网络程序里面,通常都是一个服务器处理多个客户机,为了出个多个客户机的请求,服务器端的程序有不同的处理方式。 目前最常用的服务器模型: 循环服务器:循环服务器在同一时刻只能响应一个客户端的请求。 并发服务器:并发服务器在同一时刻可以响应多个客户端的请求。 循环服务器模型: TCP socket(…); bind(…); listen(); while(1) ...
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
《Linux C/C++服务器开发实践》之第7章 服务器模型设计
网络I/O模型分为异步I/O(asynchronous I/O)和同步I/O(synchronous I/O),同步I/O包括阻塞I/O(blocking I/O)、非阻塞I/O(non-blocking I/O)、多路复用I/O(multiplexing I/O)和信号驱动式I/O(signal-driven I/O)。对于输入操作,进程I/O系统调用后,内核先看缓冲区是否有相应数据,无则到设备(比如网卡设备)读取(设备I/O慢,需等待),有则直接复制到用户进程空间。注册信号处理函数,进程运行不阻塞。
网络编程day05(循环服务器、并发服务器)
循环服务器、并发服务器(多进程、多线程、IO多路复用)
服务器编程模型
在网络程序里面,通常的来讲都是许多客户机对应一个服务器.为了处理客户机的请求, 对服务端的程序就提出了特殊的要求.咱们学习一下目前最经常使用的服务器模型. 循环服务器:循环服务器在同一个时刻只能够响应一个客户端的请求 并发服务器:并发服务器在同一个时刻能够响应多个客户端的请求 9.1 循环服务器: UDP服务器 UDP循环服务器的实现很是简单: UDP服务器每次从套接字上读取一个客户端的请求,处理, 而后将结果返回给客户机. 能够用下面的算法来实现. socket(...); bind(.....
TCP(循环服务器)---Linux
一、模型 服务器模型可以分: 循环服务器:在同一时刻只能相应一个客户端的请求 并发服务器:在同一时刻可以相应多个客户端的请求 二、基础的TCP循环服务器 服务器端: #include <stdio.h> #include <sys/types.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include &...
嵌入式养成计划-31-网络编程----TCP的并发服务器模型------IO模型--IO多路复用
六十七、 TCP的并发服务器模型. 67.1 循环服务器模型. 67.2 并发服务器模型. 六十八、IO模型. 68.1 阻塞IO. 68.2 非阻塞IO. 68.3 信号驱动IO. 68.4 IO多路复用(重点!!!). 68.4.1 select. 68.4.2 poll.
2387



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



