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 ...
随机推荐
- 在C代码调用C++代码
由于历史原因,以及不同开发人员的技术偏好,C语言和C++语言都有一些独有的非常有价值的项目,因而两种语言的互操作,充分利用前人造的轮子是一件非常有价值的事情. C++代码调用C代码很简单,只要分别在包 ...
- 修改android项目sdk版本
1.右键单击项目--->properties---->Resource----->Android在Project Bulid Target对话框中选择你需要的Android版本.2. ...
- Android入门(创建、编译、运行、打包、安装)
一.创建Android项目 1.选择Emtpy Activity=>Next 2.配置项目 输入Name(名称) Package.name(包名) Save location(保存位置) Lan ...
- IDEA打包web项目为war,通过本地Tomcat启动war
1.打包 ①idea的打包很简单,网上教程也很多,简单说下:project struct-->artifact-->+-->Web Application:Archive--> ...
- 二进制原码、反码、补码以及Java中的<< 和 >> 和 >>> 详细分析
1.计算机二进制系统中最小单位bit 在计算机二进制系统中: bit (位) :数据存储的最小单元. 简记为b,也称为比特(bit),每个二进制数字0或1就是一个位(bit),其中,每 8bit = ...
- Newman+Jenkins实现接口自动化测试
目录 一.是什么Newman 二.如何安装 三.如何使用 1.运行本地文件 2.运行在线文件 3.以node.js库运行 4.导出报告 四.命令行测试真实接口 1.导出collection文件 2.导 ...
- 彻底理解使用JavaScript 将Json数据导出CSV文件
前言 将数据报表导出,是web数据报告展示常用的附带功能.通常这种功能都是用后端开发人员编写的.今天我们主要讲的是直接通过前端js将数据导出Excel的CSV格式的文件. 原理 首先在本地用Excel ...
- svg和css3创建环形渐变进度条
在负责的项目中,有一个环形渐变读取进度的效果的需求,于是在网上查阅相关资料整理一下.代码如下: <!DOCTYPE html> <html lang="en"&g ...
- 使用AQS自定义重入锁
一.创建MyLock import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.AbstractQueuedSyn ...
- Androidstudio实现一个简易的加法器——分享两种方法实现(日常作业练习)
Androidstudio实现一个简易的加法器——分享两种方法实现(日常作业练习) ...