Python 中如何使用 socket 模块进行 TCP 编程?

推荐答案

-- -------------------- ---- -------
------ ------

- -- --- ---
--- ---------------------------------- ------------
    ---- ----------------------------- ------------------- -- --------------
        ------------------------- ------
        ----------------------
        -------------- --------- -- ---------------
        
        ----- ---- - ----------------------
        ---- -----
            ----------------- -- --------
            ----- -----
                ---- - ---------------
                -- --- -----
                    -----
                ------------------

- -- --- ---
--- ---------------------------------- ------------
    ---- ----------------------------- ------------------- -- --------------
        ---------------------------- ------
        ------------------------------ --------
        ---- - ------------------------
        ---------------- --------------- ---- --------

- ----
-- -------- -- -----------
    ------ ---------

    ------------- - -----------------------------------------
    ---------------------

    ------------------

本题详细解读

1. 创建 TCP 服务器

  • socket.socket(socket.AF_INET, socket.SOCK_STREAM): 创建一个 TCP 套接字。AF_INET 表示使用 IPv4 地址,SOCK_STREAM 表示使用 TCP 协议。
  • bind((host, port)): 将套接字绑定到指定的主机和端口。
  • listen(): 使服务器开始监听传入的连接请求。
  • accept(): 接受客户端的连接请求,并返回一个新的套接字对象 conn 和客户端地址 addr
  • recv(1024): 从客户端接收数据,最多接收 1024 字节。
  • sendall(data): 将数据发送回客户端。

2. 创建 TCP 客户端

  • connect((host, port)): 连接到指定的服务器地址和端口。
  • sendall(b'Hello, server'): 向服务器发送数据。
  • recv(1024): 从服务器接收数据,最多接收 1024 字节。

3. 多线程处理

  • 使用 threading.Thread 来启动服务器线程,以便客户端可以在服务器启动后立即连接。

4. 注意事项

  • 服务器和客户端需要在不同的线程或进程中运行,以避免阻塞。
  • 在实际应用中,可能需要处理更多的异常情况,如连接中断、超时等。
  • 数据接收和发送时,需要注意数据的编码和解码,通常使用 encode()decode() 方法。
纠错
反馈