day35 Pyhton 网络编程02
一内容回顾
网络基础
网络应用开发架构
B/S架构 浏览器直接作为客户端的程序
C/S架构
B/S是特殊的C/S
osi七层模型
应用层 python代码 http https ftp smtp
socket
传输层 port tcp/udp协议 四层交换机 四层路由器
网络层 ip协议 三层路由器 三层交换机
数据链路层 mac地址 arp协议 网卡 二层交换机
物理层
tcp网络模型中
arp协议-网络层
二.今日内容
tcp协议
代码
协议特点
三次握手
为什么使用tcp协议
四次挥手
代码进阶 完善
udp协议
代码
协议特点
代码的进阶
tcp
import socket sk = socket.socket()
sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # 只在测试的时候添加,到正式的生产环境中应该去掉
sk.bind(('127.0.0.1',9000))
sk.listen()
while True:
conn,addr = sk.accept() # 接电话
while True:
msg =conn.recv(1024)
print(msg.decode('utf-8'))
message = input('>>>')
conn.send(message.encode('utf-8'))
if message == 'q':
break
conn.close() sk.close()
# 起web服务 永远先启动服务端
# server端 - 服务端
# 端口被占用的原因
# bind 已经向操作系统申请了一个9000的端口
# 如果9000没有被占用,那么就批准给你使用
# 直到sk.close的时候,这个端口才归还给操作系统
# 程序结束但是忘记close关闭,
# 那么操作系统就不能及时发现这个端口已经被归还
# 当你重启程序再次申请使用9000端口的时候
# 操作系统告诉你这个端口被占用了 # 网络上是否连通决定了两台电脑能否通信
# 和tcp建立了连接之后才能通信完全是两回事儿
# 可靠的协议 # 为什么要有tcp协议
# 可靠
# 全双工
# 效率低
# 建立连接 : 三次握手
# 断开连接 : 四次挥手 # 社交软件
# tcp就不适用了 udp协议
# 1.连接资源有限
# 同一时刻只能和一个客户端沟通
# 2.每一次数据的发送都需要一个回执来确保数据可靠
# 数据发送的效率不高
client
import socket
sk = socket.socket()
sk.connect(('127.0.0.1',9000))
while True:
message = input('>>>')
sk.send(message.encode('utf-8'))
ret = sk.recv(1024)
if ret == b'q':
break
print(ret.decode('utf-8'))
sk.close()
udp
server
import socket
sk = socket.socket(type = socket.SOCK_DGRAM)
addr = ('127.0.0.1',9000)
sk.bind(addr) while True:
# udp来说 第一个信息 必须是先接收
msg,cli_addr = sk.recvfrom(1024)
print(msg.decode('utf-8'))
# message = input('>>>')
sk.sendto('收到'.encode('utf-8'),cli_addr) sk.close() # 1 先把udp协议的cs调通
# 2 让cs之间通信多说点儿话
# 3 让多个client和server进行通信 # 在server端根本就不应该有input
client
import socket
sk = socket.socket(type = socket.SOCK_DGRAM) # b'hello' == 'hello'.encode('utd-8')
sk.sendto(b'hello',('127.0.0.1',9000))
msg,ser_addr = sk.recvfrom(1024)
print(msg)
print(ser_addr) sk.close()
day35 Pyhton 网络编程02的更多相关文章
- Python网络编程02 /基于TCP、UDP协议的socket简单的通信、字符串转bytes类型
Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes类型 目录 Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes ...
- day34 Pyhton 网络编程
一今日内容 # 函数 # 面向对象 # 进阶 # 网络编程 4 # 并发编程 6-7 # 概念 # 网络基础 # 局域网的概念 # 交换机和路由器的工作流程 # ip地址 # mac地址 # 子网掩码 ...
- day36 Pyhton 网络编程03
一.内容回顾 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- day37 Pyhton 网络编程04
# tcp协议和udp协议的选择问题 # tcp # 大量的连续的数据 传递文件\发送邮件 # 文件的传递 # 下载电影 # udp # 短消息类 社交软件 # qq 微信 # 在线播放视频 快会丢帧 ...
- day39 Pyhton 并发编程02 后
一.开启子进程的另一种方式 import os from multiprocessing import Process class MyProcess(Process): def __init__(s ...
- day39 Pyhton 并发编程02
一.内容回顾 并发和并行的区别 并发 宏观上是在同时运行的 微观上是一个一个顺序执行 同一时刻只有一个cpu在工作 并行 微观上就是同时执行的 同一时刻不止有一个cpu在工作 什么是进程 一个运行中的 ...
- Linux网络编程学习路线
转载自:https://blog.csdn.net/lianghe_work/article 一.网络应用层编程 1.Linux网络编程01——网络协议入门 2.Linux网络编程02——无连接和 ...
- day40-网络编程02
Java网络编程02 4.TCP网络通信编程 基本介绍 基于客户端--服务端的网络通信 底层使用的是TCP/IP协议 应用场景举例:客户端发送数据,服务端接收并显示控制台 基于Scoket的TCP编程 ...
- 02网络编程( socket套接字+TCP粘包 )
目录 02 网络编程 一.socket套接字编程 二.简易代码模板 2.1 服务端 2.2 客户端 三.通信循环及代码优化 四.黏包现象 五.struct模块 六.简易版本报头 七.上传文件数据 * ...
随机推荐
- 关于input框仿百度/google自动提示的方法
引入jquery-autocomplete文件 链接:https://pan.baidu.com/s/1hW0XBYH8ZgJgMSY1Ce6Pig 密码:tv5b $(function() { $( ...
- 使用SVG symbols建立图标系统
在实现Web项目的图标系统时,SVG是一个不错的选择.虽然使用SVG创建图标系统有多种方式.在这篇文章中,我们只看其中一种:SVG symbols.这项技术基于两个元素的使用:<symbol&g ...
- 透过 Cucumber 学习 BDD
在需求的开发过程中,最令人困惑的地方就在于需求模糊.需求是解决业务的问题,那么验收的方式应该是由业务方提出,但是往往业务方(可能是产品经理,也可能是直接是客户)只能给出比较模糊的一个验收标准,而程序却 ...
- Spring Cloud各组件学习
Spring-Cloud 介绍 SpringCloud各个组件详解,因为SpringCloud部分组件停止更新,故本项目包含原SpringCloud(基于SpringCloud H版和SpringBo ...
- Oracle学习(十七)数据库锁在分布式系统里的应用(老板,乐观锁了解一下?~)
一.引言 随着业务量的增加,单机部署已经无法满足日常需求了,我们可能会把代码部署到多台服务器上去来进行服务的扩容,也就是负载均衡,那在这种场景下,怎么能实现锁的概念呢? 那么我们知道如果是一台主机部署 ...
- JVM学习(二)JVM加载类
一.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构 ...
- RocketMQ系列:rocketmq运维控制台使用详解(全网独家)
搭建好了RocketMQ的console之后,直接在浏览器打开http://{你的ip}:8080 默认会进入到驾驶舱(dashboard). 总览 整体横向菜单分为八个部分: 运维:主要是设置nam ...
- NX导入DWG失败
给客户开发的NX导入DWG图纸功能,部分电脑偶尔出现导入失败的情况,且几乎没有规律可言.客户无法理解,坚持认为是代码的问题,毕竟使用的是我们二次开发的功能.我本机没有问题,在某些出问题的电脑上也尝试多 ...
- RCTF 2019 web
写在正文前 神仙题,压根不会. 听说跟着神仙的思路走一遍印象会深点,Just mo it .2333 正文 nextphp 整体思路:phpinfo得知存在preload.php文件,并与opcach ...
- Laver 文件版本遍历器
系统简介 最近有个需求,需要罗列出各个目录中文件的信息,检索各类文件的最新版本.网上看了很多方式,但发现没有合适的.于是利用空余时间开始编写了一套文件遍历系统,如此便有了Laver(紫菜).Laver ...