总结day25 ---- udp 初识, 和tcp 进阶
前情提要
一: tcp 和udp 的区别
# tcp
# # 面向连接的 可靠的 全双工的 流式传输
# # 面向连接 :同一时刻只能和一个客户端通信
# # 三次握手、四次挥手
# # 可靠的 :数据不丢失、慢
# # 全双工 :能够双向通信
# # 流式传输 :粘包 无边界
# udp
# 无连接的 面向数据包 不可靠的 快速的
# 无连接的 :不需要accept/connect 也没有握手
# 面向数据包的 :不会粘包
# 不可靠的 :没有自动回复的机制
# 快速的 :没有那些复杂的计算、保证数据传输的机制
二:udp 的简单示例
1:服务端
import socket
sk=socket.socket(type=socket.SOCK_DGRAM) #默认是tcp 协议,需要更改type 类型,
sk.bind(('127.0.0.1',9000)) #建立服务
msg ,addr =sk.recvfrom(1024) #每次大小
print(msg)
print(addr)
sk.sendto(b'world',addr) #内容,地址
sk.close()
2:客户端
import socket
sk=socket.socket(type=socket.SOCK_DGRAM)
sk.sendto(b'hello',('127.0.01',9000))
msg,addr =sk.recvfrom(1024)
print(msg)
sk.close()
三:udp实现多人聊天
1:服务端
import socket
sk =socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1',9000)) #建立服务
while 1:
msg ,addr =sk.recvfrom(1024)
print(msg)
connect =input('>>>>').encode()
sk.sendto(connect,addr)
2:服务端
import socket
sk =socket.socket(type=socket.SOCK_DGRAM)
while 1:
connect =input('>>>>>').encode()
sk.sendto(connect,('127.0.0.1',9000))
msg ,addr =sk.recvfrom(1024)
print(msg)
四:tcp 实现多并发解决聊天问题(并不是群发只是逐个解决)
1:服务端
import socketserver #soceket的进阶类
class Myserver(socketserver.BaseRequestHandler): #固定格式
def handle(self):
conn =self.request
while 1:
conttent =input('>>>>>>>>>>>').encode()
conn.send(conttent) server =socketserver.ThreadingTCPServer(('127.0.0.1',9000),Myserver)
server.serve_forever()
2客户端:
import socket
sk =socket.socket()
sk.connect(('127.0.0.1',9000))
while 1:
ret =sk.recv(1024)
print(ret)
sk.close()
小作业:
# 1.完成一个在网络上对文件的传输(进阶需求 如果这个文件非常大 2个G)
# 1)完成文件的下载
# 2)把用户认证这个功能加上
# 必须先认证 再进行上传下载
# 3)文件的一致性校验
# 2.练习一些udp协议的操作
# 3.使用socketserver实现一个并发的基于tcp协议的多人聊天
上面作业等讲完整理
总结day25 ---- udp 初识, 和tcp 进阶的更多相关文章
- 在网络7层协议中,如果想使用UDP协议达到TCP协议的效果,可以在哪层做文章?(QQ 为什么采用 UDP 协议,而不采用 TCP 协议实现?)
为了解决这题,可以具体看看下面这个讨论. 解灵运工程师 185 人赞同 某次架构师大会上那个58同城做即时通信的人说:原因是因为当时没有epoll这种可以支持成千上万tcp并发连接的技术,所以他们使用 ...
- 为什么 UDP 有时比 TCP 更有优势
随着网络技术飞速发展,网速已不再是传输的瓶颈,UDP协议以其简单.传输快的优势,在越来越多场景下取代了TCP,如网页浏览.流媒体.实时游戏.物联网. 1.网速的提升给UDP稳定性提供可靠网络保障 CD ...
- 初识Modbus TCP/IP-------------C#编写Modbus TCP客户端程序(一)
转自:http://blog.csdn.net/thebestleo/article/details/52269999 首先我要说明一下,本人新手一枚,本文仅为同样热爱学习的同学提供参考,有不 对的地 ...
- Java基础之UDP协议和TCP协议简介及简单案例的实现
写在前面的废话:马上要找工作了,做了一年的.net ,到要找工作了发现没几个大公司招聘.net工程师,真是坑爹呀.哎,java就java吧,咱从头开始学呗,啥也不说了,玩命撸吧,我真可怜啊. 摘要: ...
- 为什么UDP有时比TCP更有优势?
随着网络技术飞速发展,网速已不再是传输的瓶颈,UDP协议以其简单.传输快的优势,在越来越多场景下取代了TCP.1.网速的提升给UDP稳定性提供可靠网络保障 CDN服务商Akamai(NASDAQ: A ...
- UDP 区别于 TCP 的特点
TCP 我们了解得多了,所以今天我们站在 UDP 的角度,探讨一下 UDP 区别于 TCP 的特点. 1. 面向无连接 UDP 比 TCP 简单得多,不需要“三次握手”来建立连接,直接把内容发送出去. ...
- 计算机网络之传输层(传输层提供的服务及功能概述、端口、套接字--Socket、无连接UDP和面向连接TCP服务)
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105451022 学习课程:<2019王道考研计算机网络> 学习目的 ...
- TCP ,UDP概念和TCP三次握手连接 的知识点总结
OSI 计算机网络7层模型 TCP/IP四层网络模型 传输层提供应用间的逻辑通信(端到端),网络层提供的是主机到主机的通信,传输层提供的是可靠服务. TCP 中常说的握手指的是:连接的定义和连接的建立 ...
- UDP模式与TCP模式的区别
1.TCP有连接状态,而UDP没有. 2.TCP应用层使用无需考虑包的大小及发送情况,而UDP需要. 3.TCP中IP包大小的决定者是Socket,而UDP为应用层.
随机推荐
- C# \/date(1498820611133+0800)\/ 转DateTime
开发中经常遇到日期转换问题,特别是做接口的时候,现在整理了下时间戳转为C#格式时间的方法: /// <summary> /// 时间戳转为C#格式时间 /// </summary&g ...
- 解决opacity属性在低版本IE浏览器下失效的方法
以前,一直都以为ie9以下的版本不支持opacity属性.所以就同时使用 opacity和ie独特的filter蒙版.但是有些时候需要一些动态的效果,就比如层的渐渐消失,隐藏,就需要使用动态变化的op ...
- Qt Application Menu In Window and Mac
Application Menu Application menu in different operator systems has different designed style. like W ...
- centos7之salt命令随笔笔记
打印当前服务器python下的redis版本 python -c 'import redis; print redis.VERSION' 如果salt-master报错: No minions mat ...
- Debian 如何使用测试版更新软件包到最新的版本
#vim /etc/apt/sources.list 将版本代号替换成 testing 然后更新,应可以安装最新的软件包了.
- [Selenium]等待元素出现之后再消失,界面上的loading icon都属于这种类型,之前的方法总是卡死,换这种方法目前还好用的
等待元素出现之后再消失,界面上的loading icon都属于这种类型,之前的方法总是卡死,换这种方法目前还好用的 /** * Check if the element present with cu ...
- MyBatis 实用篇(二)配置文件
MyBatis 实用篇(二)配置文件 一.全局配置 全局配置:http://www.mybatis.org/mybatis-3/zh/configuration.html <?xml versi ...
- C++ 类 & 对象-C++ 内联函数-C++ this 指针-C++ 类的静态成员
C++ 内联函数 C++ 内联函数是通常与类一起使用.如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方. 对内联函数进行任何修改,都需要重新编译函数的所有客户端 ...
- Linux安装服务器
[实验:按照下述要求安装一台Server] /boot 100M / 10G /data 50G /var/ftp LVM 6G :/dev/vg_ftp/lv_ftp swap 2048M 主机名: ...
- msfconsole邮件收集器模块
msfconsole search email collector use auxiliary/gather/search_email_collector show options 下面我们设置域名. ...