Python基础入门 Day45:Socket网络编程入门

58次阅读
没有评论

共计 1598 个字符,预计需要花费 4 分钟才能阅读完成。

在今天的 Day45 中,我们将开始学习 Python 的网络编程,掌握使用 Socket 模块进行 TCP 和 UDP 通信的基础。网络编程是构建客户端和服务器通信程序的核心,Socket 是操作系统提供的基础通信机制。

一、什么是 Socket
Socket 是“套接字”的意思,是应用程序与网络之间的中间软件抽象层。我们可以使用它创建客户端或服务器,实现数据通信。

Socket 支持的两种通信方式:

  • TCP:面向连接、可靠传输的协议,适用于文件传输、网页浏览等场景。
  • UDP:无连接、速度快但不可靠,适用于视频直播、语音通信等场景。

二、TCP 通信示例

  1. TCP 服务器(server)代码示例:
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 8000))
server.listen(1)
print(" 服务器已启动,等待连接...")

conn, addr = server.accept()
print(" 连接来自:", addr)

data = conn.recv(1024)
print(" 收到客户端消息:", data.decode())

conn.send(" 你好,客户端!".encode())
conn.close()
server.close()
  1. TCP 客户端(client)代码示例:
import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('127.0.0.1', 8000))

client.send(" 你好,服务器!".encode())
data = client.recv(1024)
print(" 收到服务器消息:", data.decode())

client.close()

三、UDP 通信示例

  1. UDP 服务器代码:
import socket

udp_server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_server.bind(('127.0.0.1', 8888))
print("UDP 服务器等待消息...")

while True:
    data, addr = udp_server.recvfrom(1024)
    print(" 接收来自 {} 的消息:{}".format(addr, data.decode()))
    udp_server.sendto(" 收到你的消息 ".encode(), addr)
  1. UDP 客户端代码:
import socket

udp_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_client.sendto(" 你好,UDP 服务器 ".encode(), ('127.0.0.1', 8888))

data, addr = udp_client.recvfrom(1024)
print(" 接收服务器回应:", data.decode())

udp_client.close()

四、关键参数说明

  • AF_INET:表示使用 IPv4 协议。
  • SOCK_STREAM:表示使用 TCP 协议。
  • SOCK_DGRAM:表示使用 UDP 协议。
  • recv():接收 TCP 消息。
  • recvfrom():接收 UDP 消息,包含来源地址。

五、小结与练习
今天我们了解了 Python 网络编程的核心 Socket,掌握了 TCP 和 UDP 两种通信方式的基础使用方法。网络编程是构建分布式系统、聊天室、远程控制工具等的基础能力。

练习建议:

  1. 实现一个 TCP 聊天程序,支持双向通信。
  2. 用 UDP 构建一个简单的“客户端广播”程序。
  3. 修改 TCP 服务器,实现持续监听并响应多个客户端。

明天我们将继续探索更高级的网络编程主题,如 select 多路复用、简单的 Web 服务框架等内容。

正文完
 0
评论(没有评论)