udp和tcp特点 实现文件上传
本周课程安排:
网络编程结束
并发网络开头
进程
线程
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特点 实现文件上传的更多相关文章
- 用c++开发基于tcp协议的文件上传功能
用c++开发基于tcp协议的文件上传功能 2005我正在一家游戏公司做程序员,当时一直在看<Windows网络编程> 这本书,把里面提到的每种IO模型都试了一次,强烈推荐学习网络编程的同学 ...
- java TCP并发实现文件上传---转载(PS:适合java1.6之前)
/** 客户端 1.服务端点 2.读取客户端已有的文件数据 3.通过socket输出流发给服务端 4.读取服务端反馈信息 5.关闭 **/ import java.io.*; import java. ...
- TCP通信的文件上传案例
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...
- NetworkComms 文件上传下载和客户端自动升级(非开源)
演示程序下载地址:http://pan.baidu.com/s/1geVfmcr 淘宝地址:https://shop183793329.taobao.com 联系QQ号:3201175853 许可:购 ...
- TCP大文件上传与UDP协议
一.UCP大文件上传(解决粘包问题) ①客户端 import socket, os, json, struct client = socket.socket() client.connect(('12 ...
- 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)
艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...
- QT TCP文件上传服务器
利用QT做为client端,纯C语言做为server端,利用tcp协议,实现client端向server端传递文件 Linux服务器端 //头文件 #include <stdio.h> # ...
- java 网络编程之TCP通信和简单的文件上传功能
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
随机推荐
- Contour等高线图代码
import matplotlib.pyplot as plt import numpy as np def f(x,y): # the height function return (1 - x / ...
- Linux上centOs6+安装mysql5.7详细教程 - 前端小鱼塘
https://coyhom.github.io/ 人类的本质是复读机,作为一个非linux专业人员学习linux最好的办法是重复 环境centos6.5 版本5.7 1: 检测系统是否自带安装mys ...
- 一个异步访问redis的内存问题
| 分类 redis | 遇到一个redis实例突然内存飙高的案例, 具体症状如下: 客户端使用异步访问模式 单个请求的回包很大,hgetall一个8M的key 由于访问量比较大,已经登录不上red ...
- gedit搭建c开发环境
在管理外部工具中,创建启动脚本 #!/bin/sh DIR=$GEDIT_CURRENT_DOCUMENT_DIR NAME=$GEDIT_CURRENT_DOCUMENT_NAME /home/lx ...
- Animate.css动画库,简单的使用,以及源码剖析
animate.css是什么?能做些什么? animate.css是一个css动画库,使用它可以很方便的快捷的实现,我们想要的动画效果,而省去了操作js的麻烦.同时呢,它也是一个开源的库,在GitHu ...
- JavaScript学习总结之数组常用的方法和属性
先点赞后关注,防止会迷路寄语:没有一个冬天不会过去,没有一个春天不会到来. 前言数组常用的属性和方法常用属性返回数组的大小常用方法栈方法队列方法重排序方法操作方法转换方法迭代方法归并方法总结结尾 前言 ...
- MySQL集群MGR架构for多主模式
本文转载自: https://www.93bok.com MGR简介 MySQL Group Replication(简称MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决 ...
- 将list集合按指定长度进行切分,返回新的List<List<??>>集合
Lists.partition public class testList { @Test public void test(){ List<Integer> numList = List ...
- svg和css3创建环形渐变进度条
在负责的项目中,有一个环形渐变读取进度的效果的需求,于是在网上查阅相关资料整理一下.代码如下: <!DOCTYPE html> <html lang="en"&g ...
- 阿里云ECS开放批量创建实例接口,实现弹性资源的创建
摘要: 为了更方便的实现弹性的资源创建,方便用户一次运行多台ECS按量实例来完成应用的开发和部署,阿里云开放了ECS的批量创建实例接口RunInstances,可以单次最多创建100台实例,避免重复调 ...