推荐答案
-- -------------------- ---- -------
------ ------
- -- --- ---
--- ---------------------------------- ------------
---- ----------------------------- ------------------- -- --------------
------------------------- ------
----------------------
-------------- --------- -- ---------------
----- ---- - ----------------------
---- -----
----------------- -- --------
----- -----
---- - ---------------
-- --- -----
-----
------------------
- -- --- ---
--- ---------------------------------- ------------
---- ----------------------------- ------------------- -- --------------
---------------------------- ------
------------------------------ --------
---- - ------------------------
---------------- --------------- ---- --------
- ----
-- -------- -- -----------
------ ---------
------------- - -----------------------------------------
---------------------
------------------
本题详细解读
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()
方法。