网络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 进行验证

相关文章
|
1月前
|
机器学习/深度学习 人工智能 安全
构建未来:AI驱动的自适应网络安全防御系统
【2月更文挑战第15天】 在数字化时代,网络安全已成为全球关注的焦点。传统的安全防御手段在面对日益复杂的网络威胁时显得捉襟见肘。本文将探讨如何利用人工智能(AI)技术构建一个自适应的网络安全防御系统。该系统能够实时分析网络流量,自动识别和响应潜在威胁,从而提供一种更加动态和灵活的安全保护机制。通过深度学习算法的不断进化,这种系统能够预测和适应新型攻击模式,显著提高防御效率和准确性。
|
3月前
|
Java
【Netty 网络通信】传统IO方式处理网络IO数据
【1月更文挑战第9天】【Netty 网络通信】传统IO方式处理网络IO数据
|
3月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
59 0
|
7天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
21天前
|
机器学习/深度学习 人工智能 运维
构建未来:AI驱动的自适应网络安全防御系统
【4月更文挑战第7天】 在数字时代的浪潮中,网络安全已成为维系信息完整性、保障用户隐私和确保商业连续性的关键。传统的安全防御策略,受限于其静态性质和对新型威胁的响应迟缓,已难以满足日益增长的安全需求。本文将探讨如何利用人工智能(AI)技术打造一个自适应的网络安全防御系统,该系统能够实时分析网络流量,自动识别并响应未知威胁,从而提供更为强大和灵活的保护机制。通过深入剖析AI算法的核心原理及其在网络安全中的应用,我们将展望一个由AI赋能的、更加智能和安全的网络环境。
28 0
|
1月前
|
NoSQL Java Linux
【Linux IO多路复用 】 Linux 网络编程 认知负荷与Epoll:高性能I-O多路复用的实现与优化
【Linux IO多路复用 】 Linux 网络编程 认知负荷与Epoll:高性能I-O多路复用的实现与优化
64 0
|
1月前
|
机器学习/深度学习 人工智能 算法
构建未来:AI驱动的自适应网络安全防御系统
【2月更文挑战第27天】 在数字化进程加速的背景下,网络安全威胁日益增长,传统的安全防御机制逐渐显得力不从心。本文提出一种基于人工智能技术的自适应网络安全防御系统架构,旨在通过实时分析网络行为和自动调整防御策略来应对复杂多变的网络攻击。该系统利用机器学习算法对异常行为进行检测与分类,并结合深度学习技术实现攻击模式的预测和响应策略的动态优化。文章详细阐述了系统的设计理念、关键技术以及预期效能,展望了AI技术在网络安全领域应用的未来趋势。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
构建未来:AI驱动的自适应网络安全防御系统
【2月更文挑战第26天】 在数字化时代,网络安全已成为维护信息完整性、确保业务连续性的关键。随着攻击手段的不断进化,传统的安全防御措施已不足以应对日益复杂的威胁。本文将探讨人工智能(AI)如何革新网络安全领域,构建一个自适应的防御系统。通过分析当前网络威胁的演变趋势,结合AI技术的实时数据分析、模式识别和自我学习能力,提出一种智能化的安全框架。该框架能够动态调整安全策略,预防未知攻击,并减少误报,从而为网络环境提供更加坚固的保护。
【计算机网络】物理链路通信信号
【1月更文挑战第27天】【计算机网络】物理链路通信信号