08 2021 档案
摘要:前言 本文记录通过回调函数通知到多线程的框架。 本文链接:李柱明博客-框架:https://www.cnblogs.com/lizhuming/p/15205560.html 主要用于解耦。 实现原理 就是把多个回调函数插入到一个链表中,在对应的地方执行这个链表中的所有回调函数。 用途 通知业务只是
阅读全文
摘要:前言 本笔记通过记录 数据包 在网络中的生命履历来引出一些网络基础知识,如: MAC、ARP、IP、子网掩码、网关、集线器、交换机、路由器这些概念都是在链路层和网络层。 (这些都不做严谨的说明,只是为了更好的了解而表达的个人描述) 参考: 写得通俗易懂:如果让你来设计网络 数据包简要生命周期 浏览本
阅读全文
摘要:前言 主要记录TCPIP一些小笔记 说明: demo 基于 Linux。 TCP/IP 网络编程笔记散集 快速入门: I/O 缓冲: I/O 缓冲在每个 TCP 套接字中单独存在。 I/O 缓冲在创建套接字时自动生成。 即使关闭套接字也会继续传递输出缓冲中遗留的数据。 关闭套接字将丢失输入缓冲中的数
阅读全文
摘要:前言 说明: demo 基于 Linux。 8. 套接字的多种选项 一般创建好套接字后直接使用即可,有些配置是默认的,当然也可以通过以下修改。 8.1 API getsockopt(); & setsockopt(); /* sock: 用于查看选项套接字文件描述符 level: 要查看的可选项协议
阅读全文
摘要:前言 说明: demo 基于 Linux。 7. 域名与网络地址 本节主要记录三个名词:DNS、域名及IP。 7.1 IP IP地址:网络层的主机地址。老生常谈啦。 目前分为IPV4和IPV6。 如百度的地址之一:202.108.22.5 7.2 域名 域名就是IP的别名吧,因为人类对数字的记忆较难
阅读全文
摘要:前言 说明: demo 基于 Linux。 6. TCP 的半关闭 关闭套接字API有: close():单方面全断开。 shutdown():可选断开某个流。 6.1 何为半关闭 如图分为输入流和输出流两个流,关闭其一就是半关闭。 6.2 半关闭解决的用途 单方面断开可能带来的问题如图: 主机A发
阅读全文
摘要:前言 说明: demo 基于 Linux。 5. UDP 网络编程 UDP 是无连接的,不需要建立连接。 5.1 UDP 的工作原理 参考图: 主机B的数据包中包含目的主机的IP+端口号。 其中IP是把数据的目的主机地址,端口号是目的主机对用的程序。 路由器小知识: IP:主机地址。如目的IP,每个
阅读全文
摘要:前言 说明: demo 基于 Linux。 4. I/O 缓冲 在 李柱明博客-TCP/IP TCP详细笔记 理论基础上补充一些关于网络编程的细节。 4.1 TCP 套接字中的 I/O 缓冲 TCP 套接字的数据收发无边界。 服务器即使调用 1 次 write 函数传输 A 个字节的数据,客户端也有
阅读全文
摘要:前言 说明: demo 基于 Linux。 3. 地址族与数据序列 // 调用 bind 函数分配IP地址和端口号。 // 成功时返回0,失败时返回-1 #include <sys/socket.h> int bind(int sockfd, struct sockaddr *myaddr, soc
阅读全文
摘要:前言 说明: demo 基于 Linux。 建议直接参考实例。 2. 套接字类型与协议设置 原文:李柱明博客:https://www.cnblogs.com/lizhuming/p/15149522.html 2.1 套接字协议及数据传输特性 2.1.1 创建套接字API API: /* 成功时返回
阅读全文
摘要:前言 说明: demo 基于 Linux。 1. 快速入门 以下步骤简略了很多细节,但是通过下面的几个函数就能构建出简单的TCP/IP网络编程demo了。 原文:李柱明博客 1.1 服务端编程简要步骤 网络编程中和接受连接请求的套接字创建过程可整理如下: 第一步:调用 socket 函数创建套接字。
阅读全文