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

进程
线程
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. PHPExcel之蛋疼

    限制了内存,处理个80+K的表就会GG,所以还要尽量删空行,选中某一行如A3,ctrl+shift+↓然后ctrl+小键盘的减号最后需要ctrl+s

  2. 【OpenCv-Python】Getting Started with Images

    1.1读入图像 使用函数 cv2.imread() 读入图像.这幅图像应该在此程序的工作路径,或者给函数提供一个完整的路径,第二个参数是要告诉函数应该如何读取这幅图片. cv2.IMREAD_COLO ...

  3. JavaScript中prompt的使用

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.js * 作者:常轩 * 微信公众号:Worldhel ...

  4. Ubuntu 18.04 国内的 apt 源

    一.Ubuntu 18.04 国内的 apt 源 1. 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted univers ...

  5. typescript 02 数据类型

    ---恢复内容开始--- 1.数据类型 ts为了使代码更加规范并利于维护,增加了类型校验 提供了以下几种类型 布尔类型 boolean 数字类型 number 字符串类型 string 数组类型 ar ...

  6. Layabox 预制体prefab使用

    //腊鸭官方api不详细系列之ui预制体 // 创建预制体文件,随便拖一个场景中的预制体到 Assets的任意文件夹中,要规范的话则放在Prefab中 // 上一步操作完后就可以在文件夹中看到.pre ...

  7. 使用Navicat Premiun远程连接MySQL失败,报错(10038)

    远程连接MySQL失败,可能有一下原因: 1.小伙子/小姑凉注意一下你的ip是否输入正确了!! 2.网络或防火墙问题 1).排查网络问题 使用命令:ping 192.168.1.1 查看网络请求是否超 ...

  8. 这样阅读STM32参考手册更高效

    <STM32F103xxx参考手册>不需要全部阅读——没有时间的.建议选读,但是前几章必读.存储器和总线架构.电源控制.备份寄存器.复位和时钟控制,通用和复用功能I/O,中断和时间等等前几 ...

  9. centos7下pymysql安装

    1. 安装 添加mysql yum respository 添加 MySQL Yum Repository 到你的系统 repository 列表中,执行 wget http://repo.mysql ...

  10. video标签加载视频有声音却黑屏

    问题 昨天用户上传了一个视频文件,然而发现虽然有声音但是黑屏. 解释 因为原视频的编码是用 mp4v 格式的,它需要专用的解码器.而 chrome 并不支持,所以无法播放. 然后如果用转码功能转成用 ...