网络编程
来源:互联网 发布:鱼子酱眼精华 知乎 编辑:程序博客网 时间:2024/06/05 18:52
1.Socket通信原理简介
socket 网络套接字,就是在不同的计算机之间进行通信的一个抽象
socket是两个节点之间的数据传输,端点可能处于同一台主机,也可能位于不同的主机中,通常属于C/S架构,一个连接发起者(initiator)另外一个连接侦听者(listener),通常将从事侦听的socket称作“服务器”,将发起连接的套接字称作“客户端”。
TCP握手与socket通信细节:http://www.jianshu.com/p/3f42172f582b
Socket通信原理简介:http://www.jianshu.com/p/90348ef3f41e
2.网络I/O模型
同步模型包括 阻塞I/O,非阻塞I/O,多路复用I/O
阻塞I/O 发送请求后,等返回实际数据在干活,要不一直傻等
非阻塞I/O 发送请求是轮询式的,没有数据就回来继续干的其他的,然后再发请求直到最后得到数据拉倒
多路复用I/O 就是轮询多个socket,哪个有数据了处理哪个
对于多路复用I/O有三种,分别是 select, poll, epoll三种方式
异步模型 异步I/O和同步I/O不同,异步不是按顺序执行的,用户进程进行aio_read系统调用后,内核不论数据是否准备好了都直接返回给进程,然后用户态进程就去干其他的事情,等到socket数据准备好了,内核直接复制数据给进程,然后从内核向进程发送通知,I/O两个阶段都是非阻塞的
2.同步和异步的区别
同步往往是一个函数调用之后,函数挂起,一直等到获得了结果返回给函数了,函数才继续运行,如果调用函数之后不挂起,虽然没数据返回给函数,但是先让函数继续运行,等数据到达了再通知函数,就是异步的了
阻塞和非阻塞的概念比较容易和同步异步混淆,,阻塞和非阻塞就是说函数是否让线程挂起不往下执行了,通常同步是阻塞的,异步是非阻塞的,那异步有没有阻塞的情况呢,有异步阻塞的情况就是函数调用之后并没有返回结果而是注册了回调函数,非阻塞的情况下,函数马上返回,但是如果不返回,此时就是阻塞的状态,等数据到达通知函数,这是异步阻塞
总结:
区分同步和异步的方法就是看调用函数之后的获取数据的方式,要是挂起一直等着数据就是同步,要是先干其他的,通过回调得数据则是异步
区分阻塞和非阻塞方法就是看调用函数之后函数是否让线程挂起不再往下执行,
深入的
Select 模型简介:http://www.jianshu.com/p/edb9ddd51c3d
Epoll 模型简介: http://www.jianshu.com/p/0fb633010296
积累还不够,只能看懂大概,知其然不知所以然
TCP握手与socket通信细节:http://www.jianshu.com/p/3f42172f582b
写在这里备查,一定要拿下的东西
http://www.zhangdongshengtech.com/article-detials/151
http://wiki.jikexueyuan.com/project/python-actual-combat/tutorial-23.html
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- TrustZone与TEE的发展历史、技术原理以及产业格局
- OpenGL ES2.0教程:编写自己的shader(2)
- Maven项目转换为javaWEB项目
- 选择排序(php代码实现)
- HDU 1724 自适应Simpson积分 解题报告
- 网络编程
- OSI的七层模型详解
- 受不了现在的自己
- BPS计划功能出口的数据处理
- linux系统下性能调试工具。
- 【Noip2013】生活大爆炸版石头剪刀布
- ZOJ 3209 Treasure Map DLX精确覆盖
- python小程序-简易计算器
- Ng-ML|第七周SVM