Python全栈-网络编程基础
一、C/S架构
二、OSI七层模型
三、socke是什么狗屁?
四、socket的种类
五、socket编程
# 服务器端
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.面向对象:类— ...
随机推荐
- nodemcu使用心得1
1.简介 最近迷上了性价比超高的模块nodemcu,它是基于esp8266-12E的非常易用的模块.他可以用lua语言编程,带有丰富的库. 2.硬件 1)esp8266-12E单元模块原理图 经本人实 ...
- Servlet (三) 文件下载(只支持英文文件名)
package cn.sasa.serv; import java.io.FileInputStream; import java.io.IOException; import java.io.Inp ...
- Linux命令小计
一.yum和apt-get的区别 Linux系统下安装包格式有:rpm包和deb包. pm包主要应用在RedHat系列包括 Fedora等发行版的Linux系统上 deb包主要应用于Debian系列包 ...
- EC2(elastic compute cloud,弹性计算云,又称EC2实例)
(一)定义:EC2和实例EC2(elastic compute cloud,弹性计算云),即云中的虚拟服务器. 是用于在云中创建和运行虚拟机的 Amazon Web 服务.简言之,EC2就是一部具有无 ...
- mysql 权限管理 目录
mysql 权限管理介绍 mysql 权限管理 记录 mysql 权限管理 grant 命令 mysql 权限管理 revoke 回收权限 命令 mysql 权限管理 针对库 授权 db.* mysq ...
- 20170731 培训Bootstrap
Bootstrap使用 涉及培训内容框架:--1 html html为标记语言,可以理解为容器,就是用来承载你想要展示到网页的内容的容器.版本也有很多,不同版本表示不同的标记的新增或者取代. Boot ...
- 007-js中的Array常用方法
原文:http://www.runoob.com/jsref/jsref-obj-array.html 摘要常用方法 const array=new Array(); // 1 增加元素 // 1.1 ...
- 矩形嵌套(dp)
矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...
- 关于获取路径path
String webPath = request.getServletPath(); log.info(webPath); 输出: /zjdlbb/zjdlbb/zjdlbb/test.ht log. ...
- 死锁与递归锁 信号量 event 线程queue
1.死锁现象与递归锁 死锁:是指两个或两个以上的进程或线程在执行过程中,因争抢资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态或系统产生了死锁,这些永远在互相 ...