开发与安全

249 篇文章
67 人订阅

全部文章

s1mba

linux系统编程之基础必备(七):read/write函数与(非)阻塞I/O的概念

一、read/write 函数 read函数从打开的设备或文件中读取数据。 #include <unistd.h> ssize_t read(int fd,...

3440
s1mba

linux系统编程之信号(五):实时信号与sigqueue函数

一、sigqueue函数 功能:新的发送信号系统调用,主要是针对实时信号提出的支持信号带有参数,与函数sigaction()配合使用。 原型:int sigqu...

2720
s1mba

linux系统编程之信号(四):信号的捕捉与sigaction函数

一、内核如何实现信号的捕捉 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。由于信号处理函数的代码是在用户空间的,处理过程比较复...

3070
s1mba

linux系统编程之信号(三):信号的阻塞与未决

一、信号在内核中的表示 实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(B...

2210
s1mba

linux网络编程之socket(十五):UNIX域套接字编程和socketpair 函数

一、UNIX Domain Socket IPC socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX...

3830
s1mba

[置顶] linux网络编程之socket(十四):基于UDP协议的网络程序

一、下图是典型的UDP客户端/服务器通讯过程 ? 下面依照通信流程,我们来实现一个UDP回射客户/服务器 ?   #include <sys/types.h> ...

2450
s1mba

linux网络编程之socket(十三):epoll 系列函数简介、与select、poll 的区别

一、epoll 系列函数简介 #include <sys/epoll.h> int epoll_create(int size); int epoll_cr...

2380
s1mba

linux网络编程之socket(十二):select函数的并发限制和 poll 函数应用举例

一、用select实现的并发服务器,能达到的并发数,受两方面限制 1、一个进程能打开的最大文件描述符限制。这可以通过调整内核参数。可以通过ulimit -n来调...

2510
s1mba

linux网络编程之socket(十一):套接字I/O超时设置方法和用select实现超时

注:如无特殊说明,sockfd 原始状态都是阻塞的。 一、使用alarm 函数设置超时 void handler(int sig) { } signal(SIG...

7610
s1mba

linux网络编程之socket(九):使用select函数改进客户端/服务器端程序

一、当我们使用单进程单连接且使用readline修改后的客户端程序,去连接使用readline修改后的服务器端程序,会出现一个有趣的现象,先来看输出: 先运行服...

4070
s1mba

linux网络编程之socket(八):五种I/O模型和select函数简介

一、五种I/O模型 1、阻塞I/O ? 我们在前面所说的I/O模型都是阻塞I/O,即调用recv系统调用,如果没有数据则阻塞等待,当数据到来则将数据从内核空间(...

2720
s1mba

linux网络编程之socket(十):shutdown 与 close 函数 的区别

假设server和client 已经建立了连接,server调用了close, 发送FIN 段给client(其实不一定会发送FIN段,后面再说),此时serv...

2960
s1mba

linux网络编程之socket(七):一个进程发起多个连接和gethostbyname等函数

一、在前面讲过的最简单的回射客户/服务器程序中,一个客户端即一个进程,只会发起一个连接,只要稍微修改一下就可以让一个客户端发起多个连接,然后只利用其中一个连接发...

2520
s1mba

linux网络编程之socket(六):利用recv和readn函数实现readline函数

在前面的文章中,我们为了避免粘包问题,实现了一个readn函数读取固定字节的数据。如果应用层协议的各字段长度固定,用readn来读是非常方便的。例如设计一种客户...

2530
s1mba

linux网络编程之socket(五):tcp流协议产生的粘包问题和解决方案

我们在前面曾经说过,发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,...

2860
s1mba

linux网络编程之socket(四):使用fork并发处理多个client的请求和对等通信p2p

一、在前面讲过的回射客户/服务器程序中,服务器只能处理一个客户端的请求,如何同时服务多个客户端呢?在未讲到select/poll/epoll等高级IO之前,比较...

3580
s1mba

linux网络编程之socket(三):最简单的回射客户/服务器程序、time_wait 状态

下面通过最简单的客户端/服务器程序的实例来学习socket API。 ? echoser.c 程序的功能是从客户端读取字符然后直接回射回去。 /********...

2500
s1mba

linux网络编程之socket(二):C/S程序的一般流程和基本socket函数

一、基于TCP协议的网络程序 下图是基于TCP协议的客户端/服务器程序的一般流程: ? 服务器调用socket()、bind()、listen()完成初始化...

2340
s1mba

linux网络编程之socket(一):socket概述和字节序、地址转换函数

一、什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口。 socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程...

2990
s1mba

linux网络编程之posix 线程(三):posix 匿名信号量与互斥锁 示例生产者--消费者问题

一、posix 信号量 信号量的概念参见这里。前面也讲过system v 信号量,现在来说说posix 信号量。 system v 信号量只能用于进程间同步,...

2330

扫码关注云+社区

领取腾讯云代金券