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】96. Unique Binary Search Trees 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 记忆化递归 动态规划 卡特兰数 日期 题目地址:ht ...
- codeforce-424C. Magic Formulas(数学)
C. Magic Formulas time limit per test:2 seconds memory limit per test:256 megabytes input stan ...
- 【Java例题】3.3 正整数分解
3.将一个正整数分解为连续多个正整数之和. 例如: 15=1+2+3+4+5 15=4+5+6 15=7+8 package chapter3; import java.util.*; public ...
- Ubuntu安装Git及Git配置
1.检查Git是否已经安装 使用git version,若不显示版本号则Git未安装,下面是我安装好后显示的版本号 2.安装Git sudo apt-get install git Centos使用y ...
- Asp.Net Core 使用Monaco Editor 实现代码编辑器
在项目中经常有代码在线编辑的需求,比如修改基于Xml的配置文件,编辑Json格式的测试数据等.我们可以使用微软开源的在线代码编辑器Monaco Editor实现这些功能.Monaco Editor是著 ...
- 【白话科普】10s 从零看懂 H5
最近大家有没有发现,很多微信公众号的动态内容变多了?我们常常可以看到,公众号内容中有很多动态图片甚至动画,还可以通过手指滑动切换页面,或者有一些小的点击互动. 这种看起来有点高级的小作品,其实是都是& ...
- wordpress搭建网站更改域名后打开网页排版显示错乱解决办法
发生的原因: 我本来已经搭建好了网站,也测试了没问题.后来更改了网站的域名,出现了这种情况. 解决办法: 需要修改数据库的options表里面的 siteurl 和 home 这两个表的内容为最新的域 ...
- PowerShell 管道符之Where-Object的使用方法
1 Get-Process|Select-Object -Property Name|Where-Object{$_ -match 'QQ'} 可以匹配到QQ为名的结果
- 查询 MySQL 字段注释的 5 种方法!
很多场景下,我们需要查看 MySQL 中表注释,或者是某张表下所有字段的注释,所以本文就来盘点和对比一下查询注释的几种方式. 创建测试数据库 开始之前咱们先创建一个数据库,以备下面演示使用. -- 如 ...
- Java不限制从键盘输入一个数组
Java不限制从键盘输入一个数组 在写算法的时候,需要从键盘输入一个数组,一直不会,最近看了几篇博客学会了,下面用二分查找举例: package com.基础; import java.util.Sc ...