Linux网络编程篇
文章平均质量分 87
Linux网络编程学习
F+T
这个作者很懒,什么都没留下…
展开
-
【Linux网络编程学习】阻塞、非阻塞、同步、异步以及五种I/O模型
此为牛客Linux C++课程笔记。1. 阻塞 blocking调用者调用了某个函数,等待这个函数返回,期间什么也不做,不停的去检查这个函数有没有返回,必须等这个函数返回才能进行下一步动作。2. 非阻塞 non-blocking非阻塞等待,每隔一段时间就去检测IO事件是否就绪。没有就绪就可以做其他事。非阻塞I/O执行系统调用总是立即返回,不管事件是否已经发生,若事件没有发生,则返回-1,此时可以根据 errno 区分这两种情况,对于accept,recv 和 send,事件未发生时,errno 通原创 2021-11-20 17:59:51 · 1165 阅读 · 0 评论 -
【Linux网络编程学习】I/O多路复用——epoll
此为牛客Linux C++课程和黑马Linux系统编程笔记。1. 关于epollepoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。目前epoll是linux大规模并发原创 2021-11-20 00:23:38 · 487 阅读 · 0 评论 -
【Linux网络编程学习】I/O多路复用——select和poll
此为牛客Linux C++课程和黑马Linux系统编程笔记。0. I/O多路复用所谓I/O就是对socket提供的内存缓冲区的写入和读出。多路复用就是指程序能同时监听多个文件描述符。之前的学习中写了多进程和多线程版的简单服务器模型,但是有个问题:每次新来一个客户端TCP连接请求,就需要新建一个进程或线程来与之进行信息传输,但是如果连接的客户端太多,就会出现所谓C10K问题:当创建的进程或线程多了,数据拷贝频繁(缓存I/O、内核将数据拷贝到用户进程空间、阻塞,进程/线程上下文切换消耗大,导致操作系原创 2021-11-17 21:27:09 · 547 阅读 · 0 评论 -
【Linux网络编程学习】使用socket实现简单服务器——多进程&多线程版本
此为牛客Linux C++课程和黑马Linux系统编程笔记。1. 思路大体思路与上一篇的单进程版服务器–客户端类似,都是遵循下图:多进程版本有以下几点需要注意:由于TCP是点对点连接,服务器主进程连接了一个客户端以后就无法再与其他客户端相连,所以多进程版的服务器中的父进程只负责监听,连接并信息传输的工作交给子进程完成。每当accept到一个客户端的连接请求,就fork出一个子进程来处理。父进程负责监听的同时,也要回收子进程的资源,避免产生僵尸进程。2. 服务端/*实现一个简单的多进程服务原创 2021-11-14 20:21:46 · 2636 阅读 · 0 评论 -
【Linux网络编程学习】socket API(socket、bind、listen、accept、connect)及简单应用
此为牛客Linux C++课程和黑马Linux系统编程笔记。0. 什么是socket所谓 socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口。socket 可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,这是一个逻辑上的概念。它是网络环境中进原创 2021-11-10 17:29:45 · 3032 阅读 · 1 评论 -
【Linux网络编程学习】预备知识(网络字节序、IP地址转换函数、sockaddr数据结构)
此为牛客Linux C++课程和黑马Linux系统编程笔记。1. 网络字节序我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分。磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分。网络数据流同样有大端小端之分,那么如何定义网络数据流的地址呢?发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存,因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址。TCP/IP原创 2021-11-09 23:25:46 · 2450 阅读 · 2 评论