python29day
内容回顾
网络编程
- 概念
- B/S C/S架构
- B/S browser server
- C/S client 装客户端使用的 server远程服务器的
- osi七层协议
今日内容
tcp协议的编程
如何在连接内多和客户端说几句
能够接收多个客户端的请求
import socket sk=socket.socket()
sk.bind(('127.0.0.1',9000))
sk.listen() #就可以等人来连接了 while True:
conn,addr=sk.accept() #能和多个客户端握手了
print('conn:',conn)
while True:
send_msg=input('>>>')
conn.send(send_msg.encode('utf-8'))
if send_msg.upper()=='Q':
break
msg=conn.recv(1024).decode('utf-8')
if msg.upper() == 'Q':
break
print(msg)
conn.close() #挥手 断开连接 sk.close()
import socket sk=socket.socket()
sk.connect(('127.0.0.1',9000)) while True:
msg=sk.recv(1024)
msg2=msg.decode('utf-8')
if msg2.upper()=='Q':
break
print(msg,msg2)
send_msg=input('>>>')
sk.send(send_msg.encode('utf-8'))
if send_msg.upper()=='Q':
break sk.close()
udp协议的编程
import socket sk=socket.socket(type=socket.SOCK_DGRAM) #创建套接字
sk.bind(('127.0.0.1',9000)) #绑定端口
while True:
msg,addr=sk.recvfrom(1024) #被动等待
print(msg.decode('utf-8'))
msg=input('>>>')
sk.sendto(msg.encode('utf-8'),addr)
import socket sk=socket.socket(type=socket.SOCK_DGRAM) #创建套接字
server=(('127.0.0.1',9000)) while True:
msg = input('>>>')
if msg.upper()=='Q':
break
sk.sendto(msg.encode('utf-8'),server)
msg=sk.recv(1024).decode('utf-8')
if msg.upper()=='Q':
break
print(msg)
粘包现象
- 两条连续发送的数据黏在一起了
- 只出现在tcp协议中
- 因为tcp协议 多条消息之间没有边界,并且还有一大堆优化算法
- 发送端:两条消息都很短,发送的间隔时间也非常短
- 接收端:多条消息由于没有及时接收,而在接收方的缓存短 堆在一起导致的粘包现象
- 网络最大带宽限制 MTU=1500字节
- tcp发多大都行 因为会在中途拆分
struct模块
选课系统讲解I
代码总行数2856+174=3030行
python29day的更多相关文章
随机推荐
- 【LeetCode】1154. Day of the Year 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 计算1月1号之间天数 日期 题目地址:https:// ...
- 【LeetCode】729. My Calendar I 解题报告
[LeetCode]729. My Calendar I 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/my-calendar- ...
- D. Puzzles(Codeforces Round #362 (Div. 2))
D. Puzzles Barney lives in country USC (United States of Charzeh). USC has n cities numbered from 1 ...
- 过河(状态压缩,dp)
描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上 ...
- Autofac 依赖注入小知识
Autofac 依赖注入小知识 控制反转/依赖注入 IOC/DI 依赖接口而不依赖于实现,是面向对象的六大设计原则(SOLID)之一.即依赖倒置原则(Dependence Inversion Prin ...
- 替代台湾安格AG6200 AG6201 HDMI转VGA带音频方案+设计电路 CS5213代替AG6200 AG6201
台湾安格AG6200 AG6201专门用于设计HDMI转VGA带音频输出的方案芯片,CS5213是一款HDMI to VGA转换器且结合了HDMI输入接口和模拟RGB DAC输出.带支持片上音频数模转 ...
- git中submodule子模块的添加、使用和删除
git中submodule子模块的添加.使用和删除 原文链接:https://blog.csdn.net/guotianqing/article/details/82391665背景项目中经常使用 ...
- JSP请求响应流程入门介绍
一个完整的jsp请求响应流程可以简单的使用下图表示: 过滤器:直观的了解,就是对请求做一个过滤作用,比如身份验证,验证不通过的不让他继续往下走 Servlet:请求处理中心,这个也是我们写业务逻辑的地 ...
- 基于机器学习和TFIDF的情感分类算法,详解自然语言处理
摘要:这篇文章将详细讲解自然语言处理过程,基于机器学习和TFIDF的情感分类算法,并进行了各种分类算法(SVM.RF.LR.Boosting)对比 本文分享自华为云社区<[Python人工智能] ...
- 『无为则无心』Python函数 — 34、lambda表达式
目录 1.lambda的应用场景 2.lambda语法 3.快速入门 4.示例:计算a + b 5.lambda的参数形式 6.lambda的应用 lambda表达式的主要作用就是化简代码. 匿名函数 ...