本周课程安排:
网络编程结束
并发网络开头

进程
线程
IO模型

上周内容回顾:
1.osi七层:应用层,表示层,会话层,传输层,网络层,数据链路层,物理连接层
也有人把他们归纳为五层:
应用层,
传输层,
网络层,
数据链路层,
物理连接层

以太网协议:
1.规定电信号的分组方式
2.每台计算机都必须又一块网卡,网卡上面刻有12位的16禁止编号
前6位 厂商地址
后6位 流水线号
我们把这个编号称之为mac地址

基于以太网协议通信:通信基本靠吼,不能跨局域网传输
弊端:广播风暴

ip协议:
规定了任何一台接入互联网的计算机都必须又一个ip地址
版本:ipv4 ipv6
地址特点:点分十进制
0.0.0.0~255.255.255.255
作用:能够跨局域网传输,能够唯一标识全世界独一无二的计算机

端口port:
唯一标识一台计算机上的某个基于网络通信的应用软件
0~65535
0~1024操作系统自己分配
1024~8000 常用的应用程序占用
Mysql:3306
Redis:6379
Flask:5000
Django:8000

ip+port:唯一标识全世界独一无二的一台计算机上的某一个基于网络通信的应用软件

arp协议:根据IP地址解析mac地址

Tcp(可靠协议,学名流式协议)
三次握手
四次挥手
可靠协议的原因:必须要收到消息才会在内存中删除
流式协议

粘包问题的产生:
1.接收方:
我不知道我要接收数据的总长度
2.发送方:
由于Tcp协议的内部优化算法negle
1.会将数据量比较小的,并且时间间隔比较短的数据一次性打包发送

解决方案:
发送方:1.自定义字典 2.字典序列化 3.制作报头 4.发送报头 5.发送序列化的字典 6.发送真实内容
接收方:1.接收报头 2.解析报头,获取字典长度(1,先收序列化的字典,然后反序列化) 3.文件内容的循环接收

Udp
数据报协议
没有双向通道的
1.udp协议不存在粘包问题
2.客户端可以发空
3.udp可以实现并发的效果
4.服务端不存在也不影响客户端朝服务端发送数据

区别tcp和udp
tcp:类似于打电话
udp:类似于发短信

可靠原因:
不可靠原因:

SocketServer模块
1.能够实现并发效果
并发:看起来像同时运行就能称之为并发

2.udp在使用的时候,多个客户端要有一些IO(等待用户输入,计算机没在工作)操作,不然容易卡死


并发编程
操作系统发展史

多道技术:
1.空间上的复用(多个程序公用一套硬件设备,他是多道技术实现时间上的复用的基础,不然还要去硬盘读数据)
#多个程序公用一台计算机硬件
多个程序公用一套硬件设备,他是多道技术实现时间上的复用的基础,不然还要去硬盘读数据

2.时间上的复用(单个CPU的电脑上启用多个程序,CPU快速切换,给人的感觉是同时运行)

CPU两种情况下才会切换:(先保存当前程序的运行状态)
--一个任务占用CPU时间过长或被操作系统强行夺走CPU的执行权限(比起串行效率反而降低)
--一个任务执行过程中遇到的io操作,也会被操作系统强行夺走CPU的执行权限(比起串行效率提高)

并发:看起来像同时运行就能称之为并发
并行:同时运行(同一时间同时运行)
补充:单核计算机不可能实现并行!

udp和tcp特点 实现文件上传的更多相关文章

  1. 用c++开发基于tcp协议的文件上传功能

    用c++开发基于tcp协议的文件上传功能 2005我正在一家游戏公司做程序员,当时一直在看<Windows网络编程> 这本书,把里面提到的每种IO模型都试了一次,强烈推荐学习网络编程的同学 ...

  2. java TCP并发实现文件上传---转载(PS:适合java1.6之前)

    /** 客户端 1.服务端点 2.读取客户端已有的文件数据 3.通过socket输出流发给服务端 4.读取服务端反馈信息 5.关闭 **/ import java.io.*; import java. ...

  3. TCP通信的文件上传案例

  4. 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)

    1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...

  5. NetworkComms 文件上传下载和客户端自动升级(非开源)

    演示程序下载地址:http://pan.baidu.com/s/1geVfmcr 淘宝地址:https://shop183793329.taobao.com 联系QQ号:3201175853 许可:购 ...

  6. TCP大文件上传与UDP协议

    一.UCP大文件上传(解决粘包问题) ①客户端 import socket, os, json, struct client = socket.socket() client.connect(('12 ...

  7. 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)

    艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...

  8. QT TCP文件上传服务器

    利用QT做为client端,纯C语言做为server端,利用tcp协议,实现client端向server端传递文件 Linux服务器端 //头文件 #include <stdio.h> # ...

  9. java 网络编程之TCP通信和简单的文件上传功能

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

随机推荐

  1. 初识JS之数据类型

    JavaScript JavaScript引入方式 Script标签内写代码 <script> // 在这里写你的JS代码 </script> 引入额外的JS文件 <sc ...

  2. 中文字体压缩器-解决css引入的字体太大的问题

    字蛛是一个中文字体压缩器 官方网站:http://font-spider.org/index.html 用于解决页面引入的css字体过大的问题 使用方法: npm i -g font-spider 在 ...

  3. [Python_scrapy图片爬取下载]

    welcome to myblog Dome地址 爬取某个车站的图片 item.py 中 1.申明item 的fields class PhotoItem(scrapy.Item): # define ...

  4. PHP实现 3des加密解密

    <?php /** * 3des加密 */ class Encrypt{ public function pkcs5_pad($text, $blocksize) { $pad = $block ...

  5. CentOS7.5源码编译安装mysql5.7.29

    #查看系统版本 [root@ctos3 ~]# cat /etc/redhat-release CentOS Linux release (Core) #下载源码包,需要注意的是mysql5.7 编译 ...

  6. Rxjs入门实践-各种排序算法排序过程的可视化展示

    Rxjs入门实践-各种排序算法排序过程的可视化展示 这几天学习下<算法>的排序章节,具体见对排序的总结,想着做点东西,能将各种排序算法的排序过程使用Rxjs通过可视化的方式展示出来,正好练 ...

  7. 前端每日实战:131# 视频演示如何用纯 CSS 创作一把剪刀

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/GXyGpZ 可交互视频 此视频是可 ...

  8. http请求缓存头详解

    缓存的作用:1.减少延迟(页面打开的速度).2.降低服务器负载(先取缓存,无缓存在请求服务器,有效降低服务器的负担).3.保证稳定性(有个笑话是手机抢购时为了保证服务器的稳定性,在前端写个随机数限制百 ...

  9. canvas初尝试

    最近学习了canvas,就拿它做了这么个小东西,感觉已经爱上canvas了.上代码 /* * @auhor : 开发部-前端组-李鑫超 * @property { tableData : {Array ...

  10. Ubuntu16.04下安装python3.6.4详细步骤

    记录一下: Ubuntu16.04自带的python版本为python2.7和python3.5,现在想要安装python3.6.4,注意:系统自带的python版本别删除 步骤: # 官网下载安装包 ...