网络IO 之 信号驱动型io

简介: 网络IO 之 信号驱动型io

五种网络IO

阻塞IO

非阻塞IO

多路IO复用

异步IO

信号驱动IO

  信号驱动IO -- 通过信号的方式来触发 信号处理函数执行相应的逻辑功能,类似于异步的一个过程

 

编写代码

进行信号驱动IO的调试和确认: 写一个udp的demo

#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
#include <fcntl.h>
#include <netinet/in.h>
int sockfd;
//信号处理函数
void sig_func(int arg)
{
  printf("the signal is %d\n",arg);
  char buff[256]={0};
  int ret = read(sockfd,buff,sizeof(buff));
  printf("read buff == %s , len = %d\n",buff,ret);
  write(sockfd,buff,ret);
}
int main(int agrc,char * argv[])
{
//建立udp的套接字
  sockfd = socket(AF_INET,SOCK_DGRAM,0);
  if(sockfd < 0)
  {
    perror("socket");
    return -1;
  }
//初始化信号处理函数
  struct sigaction mysig;
  mysig.sa_handler = sig_func;
  mysig.sa_flags = 0;
  sigaction(SIGIO,&mysig,NULL);
//绑定端口信息
  struct sockaddr_in addr;
  memset(&addr,0,sizeof(struct sockaddr_in));
  addr.sin_family = AF_INET;
  addr.sin_port = htons(9999);
  addr.sin_addr.s_addr = INADDR_ANY;
//设置属性,将fd加入到本进程
  fcntl(sockfd,F_SETOWN,getpid());
//设置同步 非阻塞状态
  int flag = fcntl(sockfd,F_GETFL,0);
  flag = O_ASYNC | O_NONBLOCK;
  fcntl(sockfd,F_SETFL,flag);
//bind
  int ret = bind(sockfd,(struct sockaddr *)&addr,sizeof(struct sockaddr));
  if(ret < 0)
  {
    perror("bind");
    return -2;
  }
  while(1)  sleep(1);
  close(sockfd);
  return 0;
}

编译

gcc -o mysig mysig.c

验证

使用工具NetAssist_v4.3.25.exe 进行验证

相关文章
|
2月前
|
运维 监控 安全
公司监控软件:SAS 数据分析引擎驱动网络异常精准检测
在数字化商业环境中,企业网络系统面临复杂威胁。SAS 数据分析引擎凭借高效处理能力,成为网络异常检测的关键技术。通过统计分析、时间序列分析等方法,SAS 帮助企业及时发现并处理异常流量,确保网络安全和业务连续性。
64 11
|
2月前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
81 11
|
3月前
|
网络协议 调度 开发者
Python网络编程:Twisted框架的异步IO处理与实战
【10月更文挑战第27天】本文介绍了Python网络编程中的Twisted框架,重点讲解了其异步IO处理机制。通过反应器模式,Twisted能够在单线程中高效处理多个网络连接。文章提供了两个实战示例:一个简单的Echo服务器和一个HTTP服务器,展示了Twisted的强大功能和灵活性。
68 0
|
3月前
|
网络协议 物联网 API
Python网络编程:Twisted框架的异步IO处理与实战
【10月更文挑战第26天】Python 是一门功能强大且易于学习的编程语言,Twisted 框架以其事件驱动和异步IO处理能力,在网络编程领域独树一帜。本文深入探讨 Twisted 的异步IO机制,并通过实战示例展示其强大功能。示例包括创建简单HTTP服务器,展示如何高效处理大量并发连接。
80 1
|
3月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
1310 2
|
4月前
|
网络协议 前端开发 Java
网络协议与IO模型
网络协议与IO模型
214 4
网络协议与IO模型
|
4月前
|
缓存 Java Linux
硬核图解网络IO模型!
硬核图解网络IO模型!
|
4月前
|
开发者
什么是面向网络的IO模型?
【10月更文挑战第6天】什么是面向网络的IO模型?
34 3
|
4月前
|
数据挖掘 开发者
网络IO模型
【10月更文挑战第6天】网络IO模型
68 3
|
4月前
|
数据挖掘 开发者
网络IO模型如何选择?
网络IO模型如何选择?【10月更文挑战第5天】
45 2

热门文章

最新文章