ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python网络编程

2020-11-28 12:00:33  阅读:152  来源: 互联网

标签:HTTP python 编程 网络 urllib Python 服务器 requests 服务端


1.套接字Socket与套接字编程

要进行网络通信,需要建立起通信双方的连接,连接的双方分别称为客户端和服务端,在Python中,使用套接字socket来建立起网络连接。
套接字包含在socket模块中:
import socket
socket.socket()
对于客户端和服务端,都是使用socket来建立连接的,但是在使用行为上,客户端和服务端会有一些不一样。
服务端建立需要四个步骤:新建socket、绑定IP和端口(bind)、监听连接(listen)、接受连接(accept)。
客户端建立则简单一些,仅需两个步骤:新建socket、连接服务端(connect)。
当网络连接上以后,客户端和服务端就可以进行数据通信了,套接字通过send()函数发送数据,通过recv()函数接收数据。
服务端:
在这里插入图片描述
客户端
在这里插入图片描述
接着在一个终端先运行服务端:

python server.py

然后再在另外一个终端运行客户端:

python client.py

注意:如果在一个终端同时启动的话,服务端会报错在这里插入图片描述
在服务端的终端,将会输出以下信息:
connect addr:(‘127.0.0.1’, 50382)
b’Hello World. Hello Socket’

2.Python自带的HTTP服务器

在互联网的世界中,网页、手机H5等都是通过HTTP向用户提供服务的,这些信息存储在HTTP服务器中,HTTP服务器是一种特殊的Socket服务器,它在网络连接之上,定义了HTTP协议,使得网页、手机H5等数据,都可以以标准的HTTP协议进行传输。
Python提供了简易的HTTP服务器,可以直接运行起来。
在终端,输入这条命令,就可以启动一个HTTP服务器。
python -m http.server
启动成功后,会输出以下信息:
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) …
提示HTTP服务器在本机8000端口运行,接着就可以在浏览器输入http://127.0.0.1:8000看到由这个服务器提供的网页。
这个HTTP服务器会把运行目录的所有文件列出来,并提供下载功能。

3.Python发送HTTP请求

使用了Python自带的功能启动了一个HTTP服务器,并通过浏览器浏览到了这个HTTP服务器提供的页面。在浏览的过程中,实际上是浏览器向HTTP服务器发送了一个HTTP请求。
除了使用浏览器发送HTTP请求,通过代码也可以向HTTP服务器发送请求,Python提供了相关的库urllib,通过urllib包里面的request,可以向其他HTTP服务器发起请求。
from urllib import request
response = request.urlopen(‘https://www.imooc.com’) # 向慕课网官网发出请求
print(response) # ==> <http.client.HTTPResponse object at 0x000001377D631948>
请求成功的话,会得到一个HTTPResponse,它是来自HTTP服务器的一个回应,可以把这个回应的一些信息打印出来。
状态码:

print(response.status) # ==> 200

状态码是一个三位整数,在HTTP协议的标准里面,定义了很多状态码,其中200表示请求是正常的

4.Python的requests库

Python官方提供的urllib库可以满足一般情况下的HTTP操作,但是urllib这个库设计是用来处理url地址的,并不是专门处理HTTP操作的包。因此,在很多场景下,一般会使用requests库来进行HTTP请求。
requests库是著名的Python第三方库,使用requests库,可以定制化你的HTTP请求,包括请求方法,请求参数等等。
由于requests是第三方库,因此在使用前,需要安装。
pip install requests(如果安装过程网速不怎么好,可以使用国内镜像进行安装)
安装完成后,使用requests库来请求慕课网官网。

response = requests.get(‘https://www.imooc.com’)
打印状态码
print(response.status_code)
打印回应头
print(response.headers)
在一般的使用上,requests和urllib没有太大区别,但是在复杂的场景中,requests可以提供urllib无法提供的强大功能。因此,在使用上,建议使用requests库代替urllib库来进行HTTP请求等的操作。
通过urllib或者requests请求后,会得到一个HTTPResponse,HTTPResponse拥有状态码、回应头等的信息。
但我们知道,对于一个页面,通常是由文字、图片等信息组成的,这些属于一个HTTPResponse的内容。

标签:HTTP,python,编程,网络,urllib,Python,服务器,requests,服务端
来源: https://blog.csdn.net/qq_39172055/article/details/110262619

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有