Python全栈-网络编程基础
一、C/S架构
二、OSI七层模型
.png)


三、socke是什么狗屁?
四、socket的种类
五、socket编程

.png)
# 服务器端
import socket # 实例化一个socket对象,并指定网络层协议、传输层协议
socket_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 绑定IP、端口号
socket_server.bind(('127.0.0.1',8080),)
# 同一时间内能够接收的请求
socket_server.listen(5)
# 等待连接
connect,client_address = socket_server.accept()
# 设置接收消息,最大限制为1024
receive_mag = connect.recv(1024)
print('收到客户端的消息:%s' % receive_mag.decode('UTF-8'))
# 发送数据
connect.send(receive_mag.upper()) # 关闭连接
connect.close() # 客户端
import socket socket_client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 连接服务端,指定IP、端口号
socket_client.connect(('127.0.0.1',8080))
# 向服务端发消息
socket_client.send('Hello,I am client!'.encode('utf-8'))
data = socket_client.recv(1024)
print('接收到服务器的消息:%s' % data.decode('utf-8')) socket_client.close()
3.基于TCP的套接字连接循环和通信循环
# 服务器端
import socket phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.bind(('127.0.0.1',8080))
phone.listen(5)
while True: # 连接循环
connect,client_address = phone.accept()
print('客户端:',client_address)
while True: # 通信循环
try:
msg = connect.recv(1024)
print('客户端消息:',msg)
connect.send(msg+b'from server')
except ConnectionResetError:
break
connect.close()
phone.close() # 客户端
import socket phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.connect(('127.0.0.1',8080)) # 拨电话,地址为服务端的ip和端口
while True:
msg = input('>>>).strip()
phone.send(msg.encode('utf-8')) # 发消息
data = phone.recv(1024) #收消息
print(data.decode('utf-8'))
phone.close()
4.基于UDP的套接字实现
1)UDP原理
参考:https://baike.baidu.com/item/UDP/571511
2)套接字实现
# 服务器端
import socket # SOCK_DGRAM 数据包协议
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.bind(('127.0.0.1',8080),) while True:
data,addr = server.recvfrom(1024)
print(data.decode('utf-8'),addr)
server.sendto(data.upper(),addr)
# 客户端
import socket # SOCK_DGRAM 数据包协议
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) while True:
msg = input('>>>').strip()
if len(msg) == 0:continue
client.sendto(msg.encode('utf-8'),('127.0.0.1',8080))
data,addr = client.recvfrom(1024)
print(data.decode('utf-8'),addr)
Python全栈-网络编程基础的更多相关文章
- Python全栈-网络编程-TCP粘包
一.什么是TCP粘包 C/S架构下,接收方不知道每个消息的发送间隙.也不知道每次应该提取多少个字节的数据,与此同时,TCP是面向连接的,面向流的,收发两端都要有,因此发送端为了将多个发往接收端的数据包 ...
- Python全栈开发【基础四】
Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...
- Python全栈开发【基础三】
Python全栈开发[基础三] 本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...
- Python全栈开发【基础二】
Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...
- Python全栈开发【基础一】
Python全栈开发[第一篇] 本节内容: Python 的种类 Python 的环境 Python 入门(解释器.编码.变量.input输入.if流程控制与缩进.while循环) if流程控制与wh ...
- python学习之网络编程基础
引入场景:客户与银行关系 银行职员负责给客户提供取钱服务,客户通过账户密码跟银行职员建立合作关系.此时银行职员就可以作为服务器,当用户A取完钱后他需要等待下一个用户的接入,用户的账号密码就是建立合作关 ...
- Python全栈开发-Day1-Python基础1
目录 Python介绍 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语句 表达式f ...
- Python全栈-day4-语法基础2
一.字符串 1.字符串基础 1)作用:用于描述姓名.性别.地址等信息 2)定义方式:单引号或者双引号以及三引号内添加字符 注:day3中介绍 name = 'zhang' user_name = &q ...
- Python全栈开发-Day3-Python基础3
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3.递归 4.函数式编程介绍 5.高阶函数 1.函数基本语法及特性 三种编程范式: 1.面向过程:过程——> def 2.面向对象:类— ...
随机推荐
- Java8 in action
解决的问题: behavior parameterization,即可以把一段code,逻辑作为参数传入: 这样做的目的,当然为了代码抽象和重用,把变化的逻辑抽象出去: 在java中,如果要实现beh ...
- mysql学习【第4篇】:MySQL函数和编程
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第4篇]:MySQL函数 官方文档 : 官方文档 常用函数 分类: 数学函数 , ...
- 读书笔记-iOS核心动画高级技巧
如果不使用+imageNamed:,那么把整张图片绘制到CGContext可能是最佳的方式了. 这里我们利用了CALayer的KVC来存储和检索任意的值,将图层和索引打标签. 使用KVC打标签
- redis使用rdb恢复数据
redis中存在rdb备份和aof备份两种方式. 如果在redis多个节点发生雪崩时,我们往往使用定期冷备rdb或者aof文件,去恢复数据的方式,但往往数据量较大时rdb恢复更加的快速,毕竟aof保存 ...
- SSL连接分为两个阶段:握手和数据传输阶段
一.SSL概述SSL连接分为两个阶段:握手和数据传输阶段.握手阶段对服务器进行认证并确立用于保护数据传输的加密密钥,必须在传输任何应用数据之前完成握手.一旦握手完成,数据就被分成一系列经过保护的记录进 ...
- vue项目中 如何让外部引入的js模块 的this值 指向vue实例
当前是vue项目,想在tool.js(工具模块)中封装一个跳转页面的方法, goToUrl(name,query){ if(query){ if(query.addressCode){ vueObje ...
- nodejs 学习六 express 三种查询url参数方法
req.param() 是被废弃的api req.params 俗点:取带冒号的参数 req.body 可以肯定的一点是req.body一定是post请求,express里依赖的中间件必须有bodyP ...
- SQL Server2008及以上 表分区操作详解
SQL Server 表分区之水平表分区 转自:https://www.cnblogs.com/Brambling/p/6766482.html 什么是表分区? 表分区分为水平表分区和垂直表分区,水 ...
- ntpdata 同步时间
ntpdate用来同步时间 [root@localhost ~]# yum install -y ntp [root@localhost ~]# ntpdate time.windows.com # ...
- CentOS+Uwsgi+Nginx发布Flask开发的WebAPI
1.WebAPI 开发工具VS 于Windows环境中开发完成后使用SFTP进行同步文件到Centos中使用 2.重点:WebAPI触发的方法是为了发送Celery异步调度任务 Celery框架使用涉 ...