网络编程
记录网络编程学习经历
喂你的猴子跑了
C/C++、Qt、网络编程
展开
-
17-多线程服务器端的实现
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、引入线程的背景1.回顾多进程模型缺点* 创建进程的过程会带来一定的开销* 为了完成进程间数据交换,需要特殊的IPC技术* “上下文切换”是创建进程时的最大的开销...原创 2020-03-23 21:50:10 · 596 阅读 · 0 评论 -
16-优于select的epoll
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、回顾基于select的I/O复用技术1.基于select的I/O复用技术速度慢的主要原因* 调用select函数后针对所有文件描述符的循环语句* 每次调用select函数时都需要向该函数传递监视对象信息(更耗时:调用select函数时向操作系统传递监视对象信...原创 2020-03-11 23:10:58 · 195 阅读 · 0 评论 -
15-关于I/O流分离的其他内容
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、分离I/O流1. 通过fork函数复制出1个文件描述符,以区分输入和输出中使用的文件描述符。2.通过2次fdopen函数的调用,创建读模式FILE指针(FILE结构体指针)和写模式指针。...原创 2020-03-04 22:56:47 · 137 阅读 · 0 评论 -
14-套接字和标准I/O
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、标准I/O函数的两个优点* 标准I/O函数具有良好的移植性* 标准I/O函数可以利用缓冲提高性能二、为什么I/O函数可以利用缓冲提高性能? 使用标准I/O函数,将得到额外的另一缓冲的支持,如下图: 缓冲并非...原创 2020-03-02 22:43:33 · 126 阅读 · 0 评论 -
13-I/O复用
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、多进程服务器端的缺点和解决办法缺点:创建进程时需要付出极大代价。这需要大量的运算和内存空间,由于每个进程都具有独立的内存空间,所以相互间的数据交换也要求采用相对复杂的方法。...原创 2020-02-28 10:15:13 · 128 阅读 · 0 评论 -
12-进程间通信
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、对进程间通信的基本理解 进程A和B之间的如下谈话内容就是一种进程间通信规则。如: “如果我有1个面包,变量bread的值就变为1。如果吃掉这个面包,bread的值又变回0。因此,你可以通过变量bread值判断我的状态。”二、...原创 2020-02-26 23:13:06 · 182 阅读 · 0 评论 -
11-多进程服务器端
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、并发服务器端的实现方法* 多进程服务器:通过创建多个进程提供服务* 多路复用服务器:通过捆绑并同一管理I/O对象提供服务* 多线程服务器:通过生成与客户端等量的线程提供服务二、理解进程1. 进程的概念 - 广义概念 * ...原创 2020-02-24 22:30:34 · 229 阅读 · 0 评论 -
10-套接字的多种可选项
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、套接字多种可选项 套接字可选项是分层的。IPPROTO_IP层可选项是IP协议相关事项,IPPROTO_TCP层可选项是TCP协议相关的事项,SOL_SOCKET层是套接字相关的通用可选项。可设置套接字的多种可选项 协议层 选项名 读...原创 2020-02-15 20:34:30 · 178 阅读 · 0 评论 -
09-域名及网络地址
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、域名系统(DNS)1)DNS是对IP地址和域名进行相互转换的系统,其核心是DNS服务器2)域名是用来替代IP地址,是赋予服务器端的虚拟地址3)linux下使用ping命令查看域名IP如:ping www.baidu.comPING www.a.shi...原创 2020-02-11 16:50:09 · 425 阅读 · 2 评论 -
08-优雅地断开套接字连接
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、单方面断开连接带来的问题问题:如果主机A发送完数据后,调用close函数断开连接,之后主机A将无法接收主机B传输的数据。解决办法:只关闭一部分数据交换中使用的流(半关闭)。二、为何需要半关闭?考虑如下情况实现过程:客户端连接到服务器端,服务器端将约...原创 2020-02-03 22:05:56 · 135 阅读 · 0 评论 -
07-基于UDP的服务器端/客户端
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨参考链接:https://www.jianshu.com/p/dac7b8bdb682测试环境:Ubuntu 10.10GCC版本:4.4.5一、UDP套接字的特点(1) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP...原创 2020-02-03 16:15:47 · 336 阅读 · 0 评论 -
06-TCP原理
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、TCP套接字中的I/O缓冲1.问题:服务器端及时调用1次write函数传输40字节的数据,客户端也有可能通过多次read函数调用获取全部数据。为什么客户端可以分多次接收数据?答:write函数调用瞬间,数据移至输出缓冲;read函数调用瞬间,从输入缓冲读取数据。...原创 2020-02-02 16:33:36 · 281 阅读 · 0 评论 -
05-基于TCP的服务器端/客户端(2)
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、服务器端接收客户端数据,进行四则运算通过制定协议,完成四则运算功能,如下:1.客户端连接到服务器端后以1字节整数形式传递待算数字个数。2.客户端向服务器端传递的每个整数型数据占用4个字节。3.传递整数型数据后接着传递运算符。运算符占用1字节。4.选择...原创 2020-02-02 12:23:42 · 169 阅读 · 0 评论 -
04-基于TCP的服务器端/客户端(1)
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、理解TCP和UDP* 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字。* TCP套接字是面向连接的,又称为基于流(stream)的套接字。二、TCP/IP协议栈1.协议栈图层OSI7层模型和TCP/IP层对应...原创 2020-02-01 17:59:43 · 121 阅读 · 0 评论 -
03-地址族与数据序列
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、网络地址IP地址分为两大类:IPv4 4字节地址族IPv6 16字节地址族IPv4标准的4字节IP地址分为网络地址和主机地址,且分为A、B、C、D、E等。如图:二、网络地址分类与主机地址边界 一般可以通过IP地址第一个字节...原创 2020-01-31 22:05:42 · 228 阅读 · 0 评论 -
02-套接字类型与协议设置
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、关于协议 协议就是为了完成数据交换而定好的约定。二、深入理解创建套接字 前边已经介绍过创建套接字函数,后续主要解释该函数参数意义。头文件:#include <sys/socket.h>函数功能:创建套接字返回...原创 2020-01-31 12:26:56 · 150 阅读 · 0 评论 -
01-理解网络编程和套接字
参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨测试环境:Ubuntu 10.10GCC版本:4.4.5一、理解网络编程和套接字网络编程:编写程序使两台连网的计算机相互交换数据。套接字:网络数据传输用的软件设备。二、服务器端套接字函数简介1)创建套接字头文件:#include <sys/socket.h>函数功能:创建套接字返回值:...原创 2020-01-30 17:25:09 · 124 阅读 · 0 评论