Python网络编程(socket模块、缓冲区、http协议)
- 服务器:
- 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
- 如果建立的另一端链接被断开, 则recv立即返回空字符串
- recv是从接受缓冲区取出内容,当缓冲区为空则阻塞
- recv如果一次接受不完缓冲区的内容,下次执行会自动接受
- 如果发送的另一端不存在则会产生Pipe Broken异常
- send是从发送缓冲区发送内容,当缓冲区为满则堵塞
- 协调数据的收发(接受和处理)速度
- 减少和磁盘的交互
- 1.流式套接字采用字节流的方式进行传输,
- 而数据报套接字使用数据报形式传输数据
- 2.tcp套接字会产生粘包,udp不会
- 3.tcp编程可以保证消息的完整性,udp则不一定
- 4.tcp需要listen、accept、udp不用
- 5.tcp消息的发送接收使用recv、send、sendall、
- udp使用recvfrom,sendto
- s.type:表示套接字类型
- s.family:地址类型
- sys.stdin 0
- sys.stdout 1
- sys.stderr 2
- GET: 获取网络资源
- POST: 提交一定的附加数据
- HEAD: 获取响应头
- PUT: 更新服务器资源
- DELETE: 删除服务器资源
- CONNECT: 未使用
- TRACE: 用于测试
- OPTIONS: 获取服务器性能信息
- 1xx:提示信息,表示请求已经接收
- 2xx:响应成功
- 3xx:响应需要定向(重新记载链接第三方链接)
- 4xx:客户端错误
- 5xx:服务器端错误



- tcp是一种可靠的、面向有链接数据传输服务
- tcp能够保证数据的完整性、顺序性、无重复以及无差错
- tcp是一种以文件流的形式传输数据的服务 文件流之间是没有边界
- 的所以基友可能会产生粘包的情况 粘包是因为接受速度没有传输速度快
- 导致缓存区的数据拥堵 下次取出数据时从而产生非独立数据的链接 这种情况
- 叫做粘包 粘包只有传输多个数据时才会出现
- tcp的编程需要监听套接字 和 等待链接过程 只有链接成功才能发送数据
- 这种情况叫做三次握手、还有断开时的四次挥手
- 三次挥手:客户端请求链接、服务器返回报文、客户端完成链接
- 四次挥手:客户端请求断开、服务器接受请求、服务器准备完毕可以断开、客户端断开
- tcp收发送消息需要使用recv、send、sendall方法
- sendall比特殊 功能和send一样 但sendall有事务 若发送成功返回None 否则触发异常
- 链接时必须先运行服务器端后运行客户端
- udp就比较简单了 是面向无连接的不可靠的数据传输服务
- udp没有数据流 接受大小取决于接收方
- 若数据超出接收方接受范围则丢掉所有超出范围的内容
- udp不存在粘包的情况
- udp不需要等待链接 没有挥手过程 先发就发 想收就收 自由度比较高
- udp编程时收发消息使用recvfrom、sendto方法
- udp可用于广播可以随时断开或链接
- 客户端和服务器端可以随时运行
from socket import *
from time import sleep s = socket() s.bind(('0.0.0.0',8888))
s.listen(5) c,addr = s.accept()
print("Connect from ",addr) f = open('img.jpg','rb')
#将文件名称告知对方
c.send('img.jpg'.encode())
sleep(0.1) while True:
data = f.read(1024)
if not data:
break
c.send(data) sleep(0.1)
c.send('##'.encode()) data = c.recv(1024)
print(data.decode()) f.close()
c.close()
s.close()
客户端
from socket import * s = socket() s.connect(('172.60.50.181',8888)) filename = s.recv(1024).decode() f = open('/home/tarena/'+filename,'wb') while True:
data = s.recv(1024)
if data == b'##':
break
f.write(data) s.send("接收完成".encode()) f.close()
s.close()
Python网络编程(socket模块、缓冲区、http协议)的更多相关文章
- python 网络编程--socket模块/struct模块
socket模块: 客户端:CS架构, client -> server 浏览器:BS架构, browser -> server 网络通信本质:传输字节 doc命令查看ip地址:ipc ...
- 铁乐学Python_Day33_网络编程Socket模块1
铁乐学Python_Day33_网络编程Socket模块1 部份内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/ 理解socket Socket是应用层与TCP/IP协 ...
- Python网络编程socket
网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...
- Day07 - Python 网络编程 Socket
1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...
- 《Python网络编程》学习笔记--UDP协议
第二章中主要介绍了UDP协议 UDP协议的定义(转自百度百科) UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务 ...
- python网络编程-socket套接字通信循环-粘包问题-struct模块-02
前置知识 不同计算机程序之间数据的传输 应用程序中的数据都是从程序所在计算机内存中读取的. 内存中的数据是从硬盘读取或者网络传输过来的 不同计算机程序数据传输需要经过七层协议物理连接介质才能到达目标程 ...
- python网络编程--socket,网络协议,TCP
一. 客户端/服务端架构(用到网络通信的地方) 我们使用qq.微信和别人聊天,通过浏览器来浏览页面.看京东的网站,通过优酷.快播(此处只是怀念一下)看片片啥的等等,通过无线打印机来打印一个word文档 ...
- Python的网络编程socket模块
(1)利用socket进行简单的链接 Python里面的socket支持UDP.TCP.以及进程间的通信,socket可以把我们想要发送的东西封装起来,发送过去,然后反解成原来的样子,事实上网路通信可 ...
- python网络编程-socket编程
一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...
- Day10 Python网络编程 Socket编程
一.客户端/服务器架构 1.C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务)[QQ,SSH,MySQL,FTP] 2.C/S架构与socket的关系: 我们学习soc ...
随机推荐
- Android(java)学习笔记59:类继承的 注意事项
1. 类继承的注意事项: /* 继承的注意事项: A:子类只能继承父类所有非私有的成员(成员方法和成员变量) B:子类不能继承父类的构造方法,但是可以通过super(马上讲)关键字去访问父类构造方法. ...
- Uva 11235 RMQ问题
RMQ: 有一个不变的数组,不停的求一个区间的最小值. 使用倍增的思想优化到logN; d(i,j) 表示从 i 开始的,长度为2j的一段元素中的最小值. 那么状态转移方程: d(i,j) = min ...
- 百度Ueditor 图片上传无反应,显示上传0张,不能点确定
解决办法: \Data\Ueditor\php\Uploader.class.php 190行左右 /** * 获取文件扩展名 * @return string */ private function ...
- Linux空间PHP开发环境小白教程(LAMP)
租了一个云服务器, 但是只有linux系统,没有php开发环境, 只好自己摸索着一步一步安装啦. 本教程来自自学IT创E老师的Linux教程,想详细了解的可以去论坛找. 一.使用PUTTY登录服务器 ...
- ref 微软官网
https://docs.microsoft.com/zh-cn/previous-versions/14akc2c7(v=vs.110)
- 第14章 启动文件详解—零死角玩转STM32-F429系列
第14章 启动文件详解 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ...
- iOS接入微信登录可能遇到的问题
前言:记录一下接入微信登录的过程中可能遇到的问题 如果是出现明明已经安装了微信但是显示出来的是没有安装微信,可能出现的问题的地方有: 1.TARGETS->Info->URL Types处 ...
- 网际协议 IP
网际协议 网际协议(internet protocol),简称IP; 概念:TCP/IP网络体系结构中网际层的协议.用以提供无连接的数据服务. 1.IP地址的概念及组成 概念:IP地址就是用来唯一标 ...
- 重新认识下数组的concat方法
最近在学习react,看官方文档的时候,有一个例子中的一句话让我困惑.就是讲todoList的例子 concat不是连接数组的吗?看了一下concat的介绍 数组虽然是对象类型,但是对象毕竟不是数组啊 ...
- C/C++程序基础 (十)模板和泛型
什么是泛型编程 基于模板,有效将算法和数据结构分离. 模板 包括类型和参数 模板函数:抽象的函数定义,代表一类同构函数.编译器在其调用位置自动完成对应模板函数的实例化. 模板类:抽象的类定义,代表更高 ...