
网络编程系列 -- Linux 网络应用【套接字编程基础】
文章平均质量分 95
网络编程,Linux 端服务器代码,JAVA 端客户端代码,Nginx、Netty 源码分析相关技术专栏
奋斗企鹅CopperSun
这个作者很懒,什么都没留下…
展开
-
【JAVA 网络编程系列】NIO -- 零拷贝
【JAVA并发编程系列】NIO -- 零拷贝【1】零拷贝技术图示简析低效率的处理方式第一次优化零拷贝优化参考致谢本博客为博主学习笔记,同时参考了网上众博主的博文以及相关专业书籍,在此表示感谢,本文若存在不足之处,请批评指正。【1】高频面试题:什么是零拷贝?在哪些地方使用了?...转载 2020-06-17 14:30:52 · 658 阅读 · 0 评论 -
【Linux网络编程】常见 Socket 地址结构
【Linux网络编程】常见 Socket 地址结构【1】IPv4套接字地址结构struct sockaddr_in { sa_family_t sin_family; /* AF_INET */ in_port_t sin_port; /* 端口号 */ struct in_addr sin_addr...原创 2019-07-25 18:39:04 · 817 阅读 · 0 评论 -
【Linux网络编程】基本 TCP 套接字编程
【Linux网络编程】基本 TCP 套接字编程【1】基本 TCP 客户/服务器程序套接字执行流程客户端的角度总结TCP客户/服务器服务器的角度总结TCP客户/服务器【2】SOCKET 程序设计常见常数说明FAMILY常量FAMILY 说明 AF_INET IPv4协议 AF_INET6 IPv6协议 AF_LOCAL UNIX...原创 2019-07-30 12:40:58 · 495 阅读 · 0 评论 -
【Linux网络编程】TCP连接的分组交换与状态转移
【Linux网络编程】TCP连接的分组交换与状态转移【1】TCP连接的状态转移【2】TCP连接的分组交换【3】TIME_WAIT状态说明TIME_WAIT的作用1. 可靠地实现TCP全双工连接的终止;说明 : 假如这个最后回应的ACK丢失了,也就是服务器端接收不到这个ACK,那么服务器将继续发送它最终的那个FIN,因此客户端必须维护状态信息(TIME_WAIT)允许...原创 2019-07-23 10:32:02 · 466 阅读 · 0 评论 -
【Linux网络编程】TCP带外数据
【Linux网络编程】TCP带外数据【1】TCP 包的部首TCP带外数据相关概念紧急字段URG : 当URG=1时,告诉系统此报文段中有紧急数据,应尽快传送。紧急指针 : 指出在本报文段中的紧急数据的最后一个字节的序号,即指出带外数据字节在正常字节流中的位置。【2】带外数据概述数据分为两种,一种是带内数据,一种是带外数据。带内数据就是我...原创 2019-08-07 23:15:19 · 479 阅读 · 0 评论 -
【Linux网络编程】UDP 套接字编程
【Linux网络编程】UDP 套接字编程【1】用户数据报协议(UDP)UDP是一个简单的传输层协议,不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据报只到达一次,UDP提供无连接的服务即UDP客户与服务器之间不必存在任何长期的关系。【2】基本UDP套接字编程【2.1】UDP客户/服务器程序套接字执行流程注:sendto函数必...原创 2019-09-17 15:20:08 · 707 阅读 · 0 评论 -
【Linux网络编程】SCTP 套接字编程
【Linux网络编程】SCTP 套接字编程【1】流控制传输协议(SCTP)【1.1】SCTP相关概念SCTP在客户和服务器之间提供关联,并给应用提供可靠性、排序、流量控制以及全双工的数据传送;注:关联指两个系统之间的一次通信,可能由于SCTP多宿而涉及多个IP地址。特点SCTP是面向消息的,能够在连接的端点之间提供多个流,每个流各自可靠地按序递送消息,且互不影响; SCT...原创 2021-03-04 15:44:53 · 1785 阅读 · 0 评论 -
【Linux网络编程】广播与多播
【Linux网络编程】广播与多播【1】广播【1.1】概述不同类型的寻址方式广播用途 在本地子网定位一个服务器主机即资源发现; 在多客户主机与单服务器主机通信的局域网环境中,尽量减少分组流通; 【1.2】广播地址标记方法:{子网ID,主机ID},子网ID即由子网掩码覆盖的连续位,主机ID表示以外的位; 特殊的广播地址 子网定向广播地址:{子网ID,-1},通常路由...原创 2019-09-16 17:46:16 · 847 阅读 · 0 评论 -
【Linux网络编程】I/O 模型
【Linux网络编程】I/O模型【1】I/O模型1. 阻塞式I/O模型2. 非阻塞式I/O模型3. I/O复用模型4. 信号驱动式I/O模型5. 异步I/O模型6. I/O模型比较同步I/O操作(synchronous I/O opetation) : 导致请求进程阻塞,直到I/O操作完成;异步I/O操作(asynchronous I/O o...原创 2019-08-21 23:33:47 · 438 阅读 · 0 评论 -
【Linux网络编程】高级I/O函数
【Linux网络编程】高级I/O函数【1】pipe 函数原型 :int pipe(int filedes[2]);功能 :pipe()会建立管道,并将文件描写叙述词由參数filedes数组返回;参数 :filedes[0]为管道里的读取端;filedes[1]则为管道的写入端;返回值 :若成功则返回零,否则返回-1,错误原因存于errno中;错误代码 :EMF...原创 2019-08-02 14:50:55 · 313 阅读 · 0 评论 -
【Linux网络编程】定时器
【Linux网络编程】定时器【1】socket 选项 SO_RCVTIMEO 和 SO_SNDTIMEO系统调用 有效选项 系统调用超时后的行为 send SO_SNDTIMEO 返回-1,设置 errno 为 EAGAIN 或 EWOULDBLOCK sendmsg SO_SNDTIMEO 返回-1,设置 errno 为 EAGAIN 或 EW...原创 2019-08-14 21:57:29 · 540 阅读 · 0 评论 -
【Linux网络编程】高并发服务器编程 -- Reactor模式与Proactor模式
【Linux网络编程】高并发服务器编程 -- Reactor模式与Proactor模式【1】Reactor 模式Reactor 模式构成示意图EventHandler 抽象类表示 IO 事件处理器,它拥有 IO 文件句柄 Handle(通过get_handle获取),以及对 Handle 的操作handle_event(读/写等)方法;Concrete EventHand...原创 2019-08-05 13:37:04 · 1247 阅读 · 1 评论 -
【Linux网络编程】高并发服务器编程 -- 进程池与线程池
【Linux网络编程】高并发服务器编程-- 进程池与线程池【1】动态创建进程/线程实现高并发的缺点耗费时间,响应慢; 动态创建的子进程/子线程通常只能为一个客户服务,将导致系统产生大量的细微进程/线程,进程/线程切换将会耗费大量CPU时间; 当前进程必须合理管理其分配的各项资源,否则有可能导致可用资源衰竭;【2】进程池与线程池概述进程池/线程池由系统预先创建一组进程(数目在3-...原创 2019-08-16 19:47:47 · 953 阅读 · 0 评论 -
【Linux网络编程】使用eclipse调试libevent和开发libevent应用程序
【libevent】使用eclipse调试libevent和开发libevent应用程序【1】编译libeventtar -zxvf libevent-2.0.21-stable.tar.gz./configure --prefix=/usr/local/libeventVim打开Makefile文件,到792行.c.lo标签处,在其下方的命令中追加一条命令echo '$<' &...原创 2019-06-29 22:52:09 · 313 阅读 · 0 评论 -
【Linux网络编程】Epoll 的实现原理分析
【Linux网络编程】Epoll 的实现原理分析【1】Epoll 数据结构Epitem 对应于每一个 IO 事件;比如 epoll_ctl EPOLL_CTL_ADD 操作的时候,就需要创建一个 epitem; Eventpoll 对应于每一个 epoll 实例;比如 epoll_create 就是创建一个 eventpoll;Epitem 的定义struct epitem { RB_ENTRY(epitem) rbn; // 红黑树的节点 LIST_ENTRY(epitem) rd原创 2021-05-05 20:35:38 · 471 阅读 · 0 评论