Linux网络编程
Hello_MyDream
这个作者很懒,什么都没留下…
展开
-
01 Linux网络编程基础——服务端与客户端的基本模型
在编程时需注意:此模型的服务器是将客户端发送过来的数据进行返回,所以客户端的buf不能在读取数据后清零。这样会使得发送回客户端的数据为空,即发送了零个字节给客户端,但是这样依然是可以发送成功的,即ret == 0;但是在客户端,就会因没有读取服务端的数据(0个字节)而阻塞在send函数处,从而出现在客户端发送数据时不做任何反应的情况。(找这个问题时相当苦恼...) write与send并不会...原创 2018-12-25 14:04:55 · 28948 阅读 · 0 评论 -
心跳包与乒乓包
心跳包:客户端定时向客户端发送心跳包,通知服务端己方状态的命令字。一般用于长连接的客户端,检测连接是否正常而提供的机制。在多路IO模型中,可以选择在超时时发送心跳包。 以下为转载:https://blog.csdn.net/weixin_36750623/article/details/83547108 乒乓包:举例:微信朋友圈有人评论,客户端怎么知道有人评论?服务器怎么将评论发给客...原创 2019-02-01 00:11:45 · 29180 阅读 · 0 评论 -
什么是协议栈
协议栈是什么1.协议栈是什么--简介 协议栈,英语名称为Protocol stack,又称协议堆叠,是计算机网络协议套件的一个具体的软件实现。协议套件中的一个协议通常是只为一个目的而设计的,这样可以使得设计更容易。因为每个协议模块通常都要和其他两个通信,它们通常可以想象成是协议栈中的层。最低级的协议总是描述与硬件的物理交互。每个高级的层次增加更多的特性。2.协议栈是什么--分类...转载 2018-12-19 14:20:43 · 65788 阅读 · 0 评论 -
大端模式与小端模式
大端模式与小端模式1.存在情况:内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分,而网络数据流同样有大端小端之分。2.网络字节序:TCP/IP协议规定,网络数据流应采用大端字节序,即低地址位保存高位字节。3.移植性:为使网络程序具有可移植性,使同样的C代码在大端和小端计算机上编译后都能正常运行,可以调用库函数做网络字节序和主...原创 2019-02-02 10:59:42 · 29573 阅读 · 0 评论 -
02 IO多路转接
多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想:不再由应用程序自己监视客户端连接,取而代之由内核替应用程序监视文件。 一. select1. select函数介绍:#include <sys/select.h>/* According to earlier standards */#include <sys/time.h>#inclu...原创 2019-02-03 11:10:50 · 28611 阅读 · 0 评论 -
03 Linux环境下的UDP编程
插座第三个参数传0,表示默认协议,流式协议的典型代表就是TCP协议,报式协议的典型代表就是UTP协议。名词解释:BSD:(Berkeley Software Distribution 伯克利发布的软件套件),主要是网络部分。本地套接字:本地套接字是的的的的Unix中的中进程间通讯方式,支持进程间的通信,但不能使用在跨计算机的通信中,服务端与客户端的通信流程基本与网络套接字一致,但在...原创 2019-02-03 16:03:12 · 28333 阅读 · 0 评论 -
04 基于Socket通讯的反应堆模型
基于Socket通讯的反应堆模型反应堆是基于epoll的IO多路非阻塞模型,来实现的事件驱动,让我们按照递进的顺序进行分析,先来比较一下epoll非阻塞模型相对于多线程的优势所在。一.多线程与epoll非阻塞在理解Linux下的多线程模型与异步IO模型时,一定要理解线程与阻塞的开销其实是很大的,下面通过Linux下的测试来证明这一点:为了方便测试,让我们以Shell中的进程为例。首...原创 2019-02-03 16:11:57 · 28500 阅读 · 0 评论 -
libevent基本用法
根节点1. struct event_base *event_base_new(void); //创建红黑树根节点成功返回结构体指针,失败返回NULL。2. void event_base_free(struct event_base *base); //释放开辟的根节点内存事件循环1. int event_base_loop(struct event_base *base...原创 2020-09-14 10:21:05 · 379 阅读 · 0 评论