![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
文章平均质量分 56
干锅土鸡
这个作者很懒,什么都没留下…
展开
-
epoll介绍及原理详解
1. epoll原理与函数介绍四个重要的函数epoll_create();epoll_ctl();epoll_wait();epoll_event_callback();1.1 epoll_create()函数int epoll_create(int size);创建一个epoll对象,返回该对象的描述符(文件描述符),这个描述符就代表这个epoll对象,后续会用到;这个epoll对象最终是要close()的,因为文件描述符始终是要关闭的!size>0;原理:struct原创 2022-01-18 19:36:02 · 9384 阅读 · 0 评论 -
2. 基于多路复用的服务端
当有客户端连接时再调用accept()接受连接监视服务端文件描述符server_fd,有事件发生,连接:accept(),返回新的文件描述符:client_fd与客户端通信,监听这个描述符,监听的事件:数据是否到达,若发生了就调用read/recv函数处理数据。理解:文件描述符在[0,max]中,都会被监视。如果监视的文件描述符发生了事件,返回大于0的数值,进入if语句,遍历文件描述符,查找哪一个发生了。如果是服务端的事件,处理,接受客户端连接。不是服务端的事件,那就是客户端的事件:读数据。.原创 2021-12-03 18:26:21 · 1137 阅读 · 0 评论 -
3. Windows下的网络编程
windows下没有write read函数,没有一切皆文件的概念shutclose函数与close、closesocket函数有啥不同?在于shutdown仅仅是关闭网络连接,但却没有释放为了网络通信而申请的系统资源。ws232.lib:支持socket// Server.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <winsock2.h...原创 2021-12-03 23:04:06 · 1354 阅读 · 0 评论 -
4. 深度解析TCP、UDP
五层结构协议栈:上层依赖下层提供的服务1.1应用层:自定义协议,也可以直接使用预定义好的协议,使用协议来完成数据传输。比如A发送B字符串,我们希望send出去,B就可以接收到。完成这件事还需要传输层来保证。1.2传输层:保证数据能到达目标主机,比如tcp协议,那么就需要网络层:1.3网络层:需要数据包地址、路径,网络很复杂即网海,网络太大了,将A发送至B主机,不止一条路径,牵扯到了哪一条路径好的问题,牵扯到网络层。涉及到了数据链路层:1.4数据连接层:融合不同连接方式的链路,屏蔽网.原创 2021-12-04 00:29:48 · 2344 阅读 · 0 评论 -
5. 设计应用层协议(粘包)
为什么要自己设计协议?左边是客户端 右边是服务端服务端输出:分开三次发送,服务端应该分开收到三次字符,但是结果是一次性收到了三个字符分析:发送的时候ABC按序发送、到达。发送的数据先进入发送缓冲区,再由操作系统发送给远程主机。接受数据时接受到的数据存入接受缓冲区,程序从缓冲区读取数据。A B C都在接受缓冲区,所以读取的时候一次性接受。数据接收端无法知道数据的发送方式(独立发送还是报答报送)解决方法:自己设计协议,包含长度等信息柔性数组在《C语言剖析》中记载过…/原创 2021-12-10 18:57:29 · 502 阅读 · 0 评论