欢迎访问宙启技术站
智能推送

Python编写的网络编程案例

发布时间:2023-12-04 10:09:42

Python是一种功能强大且易于学习的编程语言,在网络编程方面也有很多强大的库和模块可以使用。在本文章中,我将介绍一些Python网络编程案例,并提供相应的使用例子。

1. TCP服务器和客户端

在Python中,使用socket模块可以轻松创建TCP服务器和客户端。下面是一个简单的TCP服务器和客户端的例子:

# TCP 服务器端
import socket

# 创建一个 socket 对象
server_socket = socket.socket()

# 取得主机名和端口号
host = socket.gethostname()
port = 12345

# 绑定主机名和端口号
server_socket.bind((host, port))

# 设置最大连接数
server_socket.listen(5)

while True:
    # 等待客户端连接
    client_socket, address = server_socket.accept()

    # 接收数据
    data = client_socket.recv(1024)
    print(f"接收到来自 {address} 的数据:{data.decode()}")

    # 发送应答数据
    client_socket.send(b"已收到消息")

    # 关闭连接
    client_socket.close()

# TCP 客户端
import socket

# 创建一个 socket 对象
client_socket = socket.socket()

# 取得主机名和端口号
host = socket.gethostname()
port = 12345

# 连接服务器
client_socket.connect((host, port))

# 发送数据
client_socket.send(b"Hello, server!")

# 接收服务器的应答数据
data = client_socket.recv(1024)
print(f"接收到服务器的应答:{data.decode()}")

# 关闭连接
client_socket.close()

2. UDP服务器和客户端

使用socket模块也可以创建UDP服务器和客户端。下面是一个简单的UDP服务器和客户端的例子:

# UDP 服务器端
import socket

# 创建一个 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 取得主机名和端口号
host = socket.gethostname()
port = 12345

# 绑定主机名和端口号
server_socket.bind((host, port))

while True:
    # 接收数据
    data, address = server_socket.recvfrom(1024)
    print(f"接收到来自 {address} 的数据:{data.decode()}")

    # 发送应答数据
    server_socket.sendto(b"已收到消息", address)

# UDP 客户端
import socket

# 创建一个 socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 取得主机名和端口号
host = socket.gethostname()
port = 12345

# 发送数据
client_socket.sendto(b"Hello, server!", (host, port))

# 接收服务器的应答数据
data, address = client_socket.recvfrom(1024)
print(f"接收到服务器的应答:{data.decode()}")

# 关闭连接
client_socket.close()

3. HTTP请求

使用requests模块可以轻松发送HTTP请求,并处理服务器的响应。下面是一个发送GET请求的例子:

import requests

# 发送 GET 请求
response = requests.get("https://www.example.com")

# 输出服务器的响应
print(response.text)

4. WebSocket服务器和客户端

使用websockets模块可以创建WebSocket服务器和客户端,并进行双向通信。下面是一个简单的WebSocket服务器和客户端的例子:

# WebSocket 服务器端
import asyncio
import websockets

async def handle(websocket, path):
    # 接收客户端的消息
    message = await websocket.recv()
    print(f"接收到来自客户端的消息:{message}")

    # 发送应答消息
    await websocket.send("已收到消息")

start_server = websockets.serve(handle, "localhost", 12345)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

# WebSocket 客户端
import asyncio
import websockets

async def hello():
    async with websockets.connect("ws://localhost:12345") as websocket:
        # 发送消息
        await websocket.send("Hello, server!")

        # 接收服务器的应答消息
        message = await websocket.recv()
        print(f"接收到服务器的应答:{message}")

asyncio.get_event_loop().run_until_complete(hello())

以上是一些常见的Python网络编程案例,通过这些例子可以看到,使用Python进行网络编程是非常方便和简单的。希望以上例子能帮助你更好地了解Python网络编程的基础知识。