搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
凡人多烦事01
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
30天学会QT(进阶)--------------第二天(创建项目)
2
嵌入式Linux开发环境搭建-(6)交叉编译QT4.8.7源码生成qmake工具
3
【计算机网络】7. 网络基础5之详解以太网协议,ARP协议,NAT协议,DNS协议_arp和nat
4
Mac 卸载重装 brew_mac 卸载brew
5
$ionicView执行顺序_$scope.$on('$ionicview
6
计算机启用远程桌面连接失败,开启局域网远程桌面连接不上怎么办
7
Python文字识别_python识别文字
8
flutter安卓模拟器不好使安卓每次打开android studio都下载并且download Importing ‘android“Gradle Project问题_importing android gradle project
9
ARP协议,DNS协议,IP协议,TCP协议和IP路由原理
10
几种使用了CNN(卷积神经网络)的文本分类模型_cnn文本分类模型是什么
当前位置:
article
> 正文
Python网络编程(socket模块、缓冲区、http协议)
作者:凡人多烦事01 | 2024-03-21 03:47:22
赞
踩
python tcpip 缓冲区
网络的概念
:主机 端口 IP 协议
服务器:
localhost/127.0.0.1
客户端:
只是在本机启动客户端,用127.0.0.1访问
服务器:
0.0.0.0
客户端:
可以在本机用127.0.0.1、192.168.0.1
服务器:
192.168.0.1
客户端:
局域网内用192.168.0.1
socket
(创建套接字) --->
bind
(绑定地址) --->
listen
(设置监听)--->
accept
(等待链接) --->
recv/send
(收/发消息) --->
close
()
收发函数特性:
recv
特征:
如果
建立的
另一端链接被断开
, 则recv立即
返回空字符串
recv
是
从
接受缓冲区
取出
内容
,当
缓冲区为空则阻塞
recv如果
一次接受不完
缓冲区的
内容
,
下次
执行
会自动接受
send
特征:
如果发送的
另一端不存在
则会
产生Pipe Broken异常
send
是
从
发送缓冲区
发送
内容,
当
缓冲
区
为满则堵塞
网络的收发缓存区:
在内存
中开辟区域,用于
发送和接受的缓冲
作用:
协调数据
的收发(
接受和处理
)
速度
减少
和
磁盘的交互
sendall(date):
功能:
tcp
套接字发送消息
参数:同
send
返回值:如果
发送成功
则
返回None
否则返回异常
tcp粘包:
产生原因:
1.
tcp
传输以
字节流
的方式
发送
消息,
消息之间没有边界
2.发送比
接受的速度快
影响:
对每次发送的内容是一个独立的意识需要单独识别时 容易使用原文件被更改
如何处理:
1.每次发送后
追加一个结尾标志
,代表本次发送完毕
2.
发送
一个
数据结构
3.
每次
发送有一个
时间间隔
基于udp的服务端编程:
1.创建套接字:
sockfd = socket(AF_INET,SOCK_DGRAM)
2.绑定地址:
sockfd.bind()
3.消息收发
data, addr = sockfd.
recvfrom
(buffersize)
功能:接受udp消息
参数:接受消息的大小
返回值:
data
接受到的内容
addr
消息发送的地址
recvfrom每次接受一个报文,
如果没有接受到的内容则直接丢弃
sockfd.
sendto
(data, addr)
功能:udp消息发送
参数:
data 要发送的内容 bytes
addr 目标地址
返回:发送字节数
4.关闭套接字:
socket.close()
import
sys
sys.argv
作用:
获取从命令行获取的参数内容
Python3 demo.py
参数1, 参数2.....
sys.argv[0]
是命令本身(程序本身)
tcp流式套接字和udp数据报套接字区别:
1.流式套接字采用
字节流
的方式进行传输,
而数据报套接字使用
数据报
形式传输数据
2.tcp套接字会产生
粘包
,udp不会
3.tcp编程可以保证消息的
完整性
,udp则不一定
4.tcp需要
listen、accept、udp
不用
5.tcp消息的发送接收使用
recv、send、sendall、
udp使用
recvfrom,sendto
socket模块
和
套接字属性
(s为套接字)
s.
type
:表示
套接字类型
s.
family
:
地址类型
套接字属性方法
s.fileno()
功能:
获取
套接字的
文件描述符
文件描述符:
每一个IO事件 操作系统都会分配一个不同的的正整数,
该正整数即为此IO操作的文件描述符
默认开启的描述符:
sys.stdin 0
sys.stdout 1
sys.stderr 2
s.
getsockname
()
功能:
获取套结字
绑定
的地址
s.
getpeername
()
功能:
获取
链接套接字
客户端的地址
s.
setsockopt
(level,optname, value)
(#
设置端口可立即重用
必须在链接端口前设置
s.setsockopt(SOL_SOcKET, SO_REUSEADDR))
功能:设置套接字选项
参数:
level:设置
选项的类型
(大类型) 常用:SOL_SOCKET
optname:
子类选项
value:
要设置的值
s.
getsockopt
(
level
, optname)
功能:
获取套接字选项值
参数:
level:选项的类型
udp
套接字应用--->
广播
一点发送多点接收
目标地址
:广播地址 172.18.32
.255
tcp应用---> http传输
http协议:
超文本传输协议
用途:
网站中浏览器
网页的获取
,基于
网站
事物
数据传输
编写基于http协议的
数据传输
特点:
1.
应用层协议
,传输层使用tcp服务
2.
简单、灵活
,可以使用
多种编程语言
操作
3.无状态的协议,既不用记录用户的输入内容
4.
http1.1
---> http2.0(还没发布)
技术的成熟和稳定性
http请求(
request
):
请求格式:
1.请求行:说明
具体的
请求类别和内容
GET /index.html /HTTP/1.1
请求类别 请求内容 协议版本
请求类别:
GET:
获取
网络
资源
POST:
提交
一定的
附加数据
HEAD:
获取响应头
PUT:
更新
服务器
资源
DELETE:
删除
服务器
资源
CONNECT: 未使用
TRACE: 用于
测试
OPTIONS: 获取服务器
性能信息
2.请求头:
对
请求的具体描述
Accept:text/html
每一个键值对占一行,描述了一个特定信息
3.空行
4.请求体: 具体
的
参数或
提交的
内容
get参数或者post提交的内容
http响应(
response
):
响应格式:
1.响应行
:
反馈
具体的
响应情况
HTTP/1.1 20 OK
版本协议 响应码 附加信息
响应码:
1xx:
提示信息,表示
请求已
经
接收
2xx:响应成功
3xx:响应需要定向(重新记载链接第三方链接)
4xx:客户端错误
5xx:服务器端错误
常见响应码:
200 成功
404
请求
内容不存在
401
没有访问
权限
500
服务器
未知错误
503
服务器
暂时
无法执行
2.响应头
:对响应
内容的具体描述
3.空行
4.响应体:
将客户端请求内容进行返回
这里这个图就看了一眼 没特意去记 凭印象画的 可能不对 但是大体逻辑应该没错
我去百度搜了 什么也没搜到 不知道是不是我的打开方式不对还是什么
只搜到了上面的两张图..........
总结:
tcp,udp协议的区别和编程实现上的差异:
tcp:
tcp是一种可靠的、面向有链接数据传输服务
tcp能够保证数据的完整性、顺序性、无重复以及无差错
tcp是一种以文件流的形式传输数据的服务 文件流之间是没有边界
的所以基友可能会产生粘包的情况 粘包是因为接受速度没有传输速度快
导致缓存区的数据拥堵 下次取出数据时从而产生非独立数据的链接 这种情况
叫做粘包 粘包只有传输多个数据时才会出现
tcp的编程需要监听套接字 和 等待链接过程 只有链接成功才能发送数据
这种情况叫做三次握手、还有断开时的四次挥手
三次挥手:客户端请求链接、服务器返回报文、客户端完成链接
四次挥手:客户端请求断开、服务器接受请求、服务器准备完毕可以断开、客户端断开
tcp收发送消息需要使用recv、send、sendall方法
sendall比特殊 功能和send一样 但sendall有事务 若发送成功返回None 否则触发异常
链接时必须先运行服务器端后运行客户端
udp:
udp就比较简单了 是面向无连接的不可靠的数据传输服务
udp没有数据流 接受大小取决于接收方
若数据超出接收方接受范围则丢掉所有超出范围的内容
udp不存在粘包的情况
udp不需要等待链接 没有挥手过程 先发就发 想收就收 自由度比较高
udp编程时收发消息使用recvfrom、sendto方法
udp可用于广播可以随时断开或链接
客户端和服务器端可以随时运行
什么是http?
http 是超文本传输协议
一种网络数据传输的协议
没错就是 协议
并且所有的www文件都必须遵守这个标准
http作用是什么?
可以用力来网站中浏览器网页获取,基于网站上的一些数据传输 例如目前我正在打的字......
编写基于http协议的数据传输
http协议 请求和响应的格式以及每一部分做什么
请求部分:
请求行:请求的具体类别和内容 比如说 类别、内容、版本协议
请求头:请求具体描述
空行:就是空行
请求体:请求具体参数或内容
响应部分:
响应行:具体响应情况 比如说 版本协议 、响应码 、附加信息
响应头:响应具体描述
空行
响应体:响应具体参数或内容
http协议中请求的基本类型和作用:
GET:获取网络资源
POST:提交一定的附加数据
HEAD:获取响应头 响应返回的文件信息
PUT:更新服务器资源
DELETE:删除服务器资源
TRACE:用于测试
OPIONS:获取服务器性能信息
CONNECT:备用
http协议响应码的类型和表达含义:
以1开头的表示请求已经链接
以2开头的表示成功接收、提示
以3开头的代表重新定向进一步处理 第三方
以4开头的客户端错误
以5开头的服务器错误
http协议请求网页的流程:
建立连接、发送请求、响应请求、断开链接
这样的一个过程称为一个事物
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/凡人多烦事01/article/detail/278192
推荐阅读
article
python
生成
有向无环图(
DAG
)--改编自
CSDN
_
python
画
dag
图...
本文改编自
CSDN
,作者ZhouMu,原文链接如下:https://blog.csdn.net/zhoujinyu071...
赞
踩
article
Python
web实战之
Django
的
缓存
机制
详解_
django
后台
缓存
机制
...
在 Web 开发中,
缓存
是一种用于存储数据
的
临时存储区域。它可以提高应用程序
的
性能和响应速度,减轻服务器
的
负载。当用户访...
赞
踩
article
Python
:
numpy
模块实现
保存
/
缓存
(类似
环境
变量
)
_
numpy
保存
变量
...
数据
保存
和引用(类似postman设置
环境
变量
)
_
numpy
保存
变量
numpy
保存
变量
...
赞
踩
article
python
Django
学习(16)——
缓存
_
django
cache
_
page
...
前言
Django
是动态网站,一般来说需要实时地生成访问的网页,展示给访问者,这样,内容可以随时变化,但是从数据库读多...
赞
踩
article
Could not
build
wheels
for
llama
-
cpp
-
python
, which...
安装
llama
-
cpp
-
python
时遇到的问题_
error
: could not
build
wheels
for
l...
赞
踩
article
基于
STM32
封装的
HTTP
请求_
stm32
http
...
通过封装
http
头,向服务器发送get请求,通过get请求上传数据,并获取返回值_
stm32
http
stm32
htt...
赞
踩
article
JavaWeb (
HTTP
Request
)_
java
httpwebrequest
...
HTTP
前言概念:Hyper Text Transfer Protocol 超文本传输协议传输协议:定义了,客户端和服务...
赞
踩
article
Http
协议和
Java
中
Http
ServletRequst&
Response
的
关系...
在学习SpringMVC框架
的
过程中遇到了
Http
ServletRequest和
Http
Servlet
Response
这...
赞
踩
article
C#
中用
HttpWebRequest
中发送
GET
/
HTTP
/
HTTP
S请求 (转载)_在每个http...
C#
中用
HttpWebRequest
中发送
GET
/
HTTP
/
HTTP
S请求 (转载)https://www.cnblog...
赞
踩
article
前端
构造
HTTP
请求
的四种方法_
前端
http
请求
...
前端
构造
HTTP
请求
的四种方法_
前端
http
请求
前端
http
请求
...
赞
踩
article
C#
http
请求
(
get
,
post
两种方式 )_
c#
http
get
...
.Net中有两个类 HttpWebRequest 和HttpWebResponse 类来实现Http的
请求
一、POST与...
赞
踩
article
C#
Http
请求
接口
Get
/
Post
_c#
http
post
...
get 和
post
请求
,最早被用来做浏览器与服务器之间交互HTML和表单的通讯协议,后来又被广泛的扩充到接口格式的定...
赞
踩
article
C#发起
http
的
GET
/
POST
请求
并处理响应,及其函数封装_
c#
http
get
...
HTTP
请求
需要引入的命名空间using System.Net;1、先整个窗体 我会先些一个命令行程序分别实现
GET
请求
...
赞
踩
article
Http
416错误解决方案
HTTP
response
code
: 416...
java.io.IOException: Server returned
HTTP
response
code
: 416...
赞
踩
article
C#-
HTTP
请求
GET
_
c#
http
get...
public static string SendRequestUTF8(string url, string para...
赞
踩
article
android
sdk
unexpected
http
status
416,
Android
htt...
方法1:只需要在启动程序加载界面前添加下面代码SSLSocketFactory.getSocketFactory().s...
赞
踩
article
C#-HTTP请求
Post
_
c#
http
post
...
///
///
post
发送字符串数据-可指定数据类型,可设置timeout/// [详细]
-->
赞
踩
article
python/
php
/
java
/
nodejs
教评-评教
系统
教学质量
评价
vue
_
php
评教
系统
...
可见,高等教育
教学质量
保障与评价
系统
的建设符合高等教育的发展方向,不仅能够突出新课改背景之下高校对于办学水平的重视,也能...
赞
踩
article
HTTP
416/
412
/415
状态
响应...
一、
HTTP
416 - 所请求的范围无法满足 (Requested Range not satisfiable) ...
赞
踩
article
Http
&
nbsp
;
416
错误
解决方案_
错误
416
...
今天写多线程下载时老报
Http
416
的
错误
,正常的话应该返回code206,但是这次却不正常,后来研究了一下,发现如下问...
赞
踩
相关标签
python
DAG
拓扑序
前端
django
numpy
开发语言
Django
缓存
llama
http协议
stm32
单片机
java
http
c#
HTTP 416