【编程小白必看】Python网络编程操作秘籍🔥一文全掌握
文章目录
前言
嘿,小伙伴们!今天我要带大家走进Python网络编程的世界,
特别关注如何使用 Python 的网络编程技术来构建网络应用和服务。跟着我一起,轻松掌握这些实战技巧!
一、什么是网络编程?
网络编程是指通过网络连接计算机之间的通信。想象一下,就像你用手机发送短信给朋友,或者上网浏览网页一样。
二、操作案例
1.使用 socket 模块
使用 socket 模块创建 TCP 客户端和服务器。
客户端
代码如下(示例):
# 使用 socket 模块 - 客户端
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345))
client_socket.sendall(b'Hello, Server!')
response = client_socket.recv(1024)
print('Received:', response.decode())
client_socket.close()
服务器
代码如下(示例):
# 使用 socket 模块 - 服务器
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
server_socket.listen()
conn, addr = server_socket.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data:
break
conn.sendall(data.upper())
2.使用 HTTP 请求
使用 requests 库发送 HTTP 请求。
代码如下(示例):
# 使用 requests 发送 GET 请求
import requests
response = requests.get('https://api.github.com')
print(response.json())
3.使用 Flask 框架
使用 Flask 框架创建简单的 Web 服务。
代码如下(示例):
# 使用 Flask 框架
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
4.使用 aiohttp 库
使用 aiohttp 库创建异步 HTTP 客户端和服务器。
客户端
代码如下(示例):
# 使用 aiohttp 库 - 客户端
import aiohttp
import asyncio
async def fetch(session, url):
async with session.get(url) as response:
return await response.text()
async def main():
async with aiohttp.ClientSession() as session:
html = await fetch(session, 'https://api.github.com')
print(html)
asyncio.run(main())
服务器
代码如下(示例):
# 使用 aiohttp 库 - 服务器
from aiohttp import web
async def handle(request):
name = request.match_info.get('name', "Anonymous")
text = "Hello, " + name
return web.Response(text=text)
app = web.Application()
app.add_routes([web.get('/', handle),
web.get('/{name}', handle)])
web.run_app(app)
5.使用 WebSocket
使用 websockets 库创建 WebSocket 服务器和客户端
服务器
代码如下(示例):
# 使用 websockets 库 - 服务器
import asyncio
import websockets
async def echo(websocket, path):
async for message in websocket:
await websocket.send(message)
start_server = websockets.serve(echo, "localhost", 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
客户端
代码如下(示例):
# 使用 websockets 库 - 客户端
import asyncio
import websockets
async def hello():
uri = "ws://localhost:8765"
async with websockets.connect(uri) as websocket:
await websocket.send("Hello, server!")
greeting = await websocket.recv()
print(greeting)
asyncio.get_event_loop().run_until_complete(hello())
6.使用 Twisted 框架
使用 Twisted 框架创建复杂的网络应用程序。
代码如下(示例):
# 使用 Twisted 框架
from twisted.internet import protocol, reactor
class Echo(protocol.Protocol):
def dataReceived(self, data):
self.transport.write(data)
class EchoFactory(protocol.Factory):
def buildProtocol(self, addr):
return Echo()
reactor.listenTCP(8000, EchoFactory())
reactor.run()
7.使用 gevent 库
使用 gevent 库创建高性能的网络应用程序。
代码如下(示例):
# 使用 gevent 库
from gevent.pywsgi import WSGIServer
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello, World!'
http_server = WSGIServer(('', 5000), app)
http_server.serve_forever()
8.使用 Tornado 框架
使用 Tornado 框架创建异步 Web 服务器。
代码如下(示例):
# 使用 Tornado 框架
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
9.使用 urllib 模块
使用 urllib 模块发送 HTTP 请求。
代码如下(示例):
# 使用 urllib 模块
from urllib.request import urlopen
response = urlopen('https://api.github.com')
data = response.read()
json_data = data.decode('utf-8')
print(json_data)
10.使用 http.client 模块
使用 http.client 模块发送 HTTP 请求。
代码如下(示例):
# 使用 http.client 模块
import http.client
conn = http.client.HTTPSConnection("api.github.com")
conn.request("GET", "/")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
总结
以上就是Python网络编程的一些常用操作,很多操作都是一行代码搞定,真的很简单,编程小白必看。相信你看完之后也能成为网络编程的小能手!如果还有不清楚的地方,欢迎留言提问哦!
希望这篇笔记对你有所帮助,快去试试吧!