Python 中的 Socket 编程入门

Socket 编程是计算机网络编程的重要组成部分,用于网络中的数据传输。它允许不同主机之间通过网络进行通信。在 Python 中,内置的 socket 模块使得网络编程变得非常简单。本文将介绍 Python 中的 Socket 编程基础,包括创建服务器和客户端的基本示例。

1. Socket 基础概念

Socket 是网络中用于发送和接收数据的一种抽象。具体来说,Socket 是一个端点,可以在网络中进行双向通信。Socket 有类型之分,常见的有:

  • TCP Socket:面向连接的协议,保证数据的可靠性。
  • UDP Socket:无连接的协议,数据包可能会丢失或顺序错乱,但速度较快。

本文将主要关注 TCP Socket 编程。

2. TCP 服务器的实现

首先,我们创建一个简单的 TCP 服务器,用于接收客户端的连接并处理数据。以下是一个基本的 TCP 服务器的示例代码:

import socket

def start_server(host='127.0.0.1', port=65432):
    # 创建一个 TCP/IP Socket
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

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

    # 开始监听
    server_socket.listen()
    print(f"服务器正在监听 {host}:{port}")

    while True:
        # 等待客户端连接
        client_socket, addr = server_socket.accept()
        print(f"连接来自 {addr}")

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

        # 发送响应
        client_socket.sendall(b"数据已接收")

        # 关闭客户端连接
        client_socket.close()

if __name__ == "__main__":
    start_server()

代码解析:

  1. 使用 socket.socket() 创建一个 TCP/IP Socket。
  2. 使用 bind() 方法将 Socket 绑定到主机和端口。
  3. 使用 listen() 方法开始监听客户端连接。
  4. 使用 accept() 方法接受客户端连接,并返回一个新的 Socket 对象和客户端地址。
  5. 使用 recv() 接收数据,使用 sendall() 发送响应数据。
  6. 最后关闭客户端连接。

3. TCP 客户端的实现

接下来,我们实现一个简单的 TCP 客户端,与刚才创建的服务器进行通信。以下是客户端的代码示例:

import socket

def start_client(host='127.0.0.1', port=65432):
    # 创建一个 TCP/IP Socket
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 连接到服务器
    client_socket.connect((host, port))
    print(f"已连接到服务器 {host}:{port}")

    # 发送数据
    client_socket.sendall(b"你好,服务器!")

    # 接收响应
    data = client_socket.recv(1024)
    print(f"服务器响应: {data.decode()}")

    # 关闭 Socket
    client_socket.close()

if __name__ == "__main__":
    start_client()

代码解析:

  1. 创建一个 TCP Socket。
  2. 使用 connect() 方法连接到服务器。
  3. 发送数据使用 sendall() 方法。
  4. 接收服务器的响应,并输出到控制台。
  5. 关闭 Socket。

4. 运行示例

在终端中首先运行服务器代码,之后再运行客户端代码。你将看到客户端成功连接到服务器,并且服务器接收到客户端发送的数据。

5. 结论

通过本文的介绍,你了解了如何在 Python 中使用 socket 模块进行基本的 Socket 编程。我们实现了一个简单的 TCP 服务器和客户端,这为网络编程的进一步学习打下了基础。后续可以通过扩展功能,支持并发客户端连接、数据处理等,来深入探索 Socket 编程的世界。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部