下面是一个完整的 TCP 服务端与客户端示例,适用于 Python 3,使用 socket 模块,并正确处理了中文传输与异常情况,支持基本的多轮通信。
TCP 服务端(server_tcp.py)
import socket
HOST = '127.0.0.1' # 监听本地地址PORT = 12345 # 自定义端口号
# 创建 TCP socketserver_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server_socket.bind((HOST, PORT))server_socket.listen(1)
print(f"服务器已启动,监听端口 {PORT},等待连接...")
try: conn, addr = server_socket.accept() print("客户端已连接:", addr)while True: data = conn.recv(1024) if not data: print("客户端断开连接。") breakmsg = data.decode("utf-8") print("客户端发来:", msg)if msg.lower() in ["bye", "exit"]: conn.sendall("再见!".encode("utf-8")) breakreply = f"已收到:{msg}" conn.sendall(reply.encode("utf-8"))
except Exception as e: print("发生异常:", e)
finally: conn.close() server_socket.close() print("服务器已关闭。")
TCP 客户端(client_tcp.py)
import socket
HOST = '127.0.0.1' # 连接目标地址PORT = 12345
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try: client_socket.connect((HOST, PORT)) print("已连接服务器,输入消息并回车(输入 bye 或 exit 退出)")while True: msg = input("我说:") if not msg: continueclient_socket.sendall(msg.encode("utf-8"))data = client_socket.recv(1024) print("服务器回应:", data.decode("utf-8"))if msg.lower() in ["bye", "exit"]: break
except Exception as e: print("连接异常:", e)
finally: client_socket.close() print("客户端已关闭。")
◆ ◆ ◆
使用说明
1、先运行服务端,建议在命令行中运行。
python server_tcp.py
2、再运行客户端(client_tcp.py)。可在 Python 编辑器中运行。
3、客户端输入文字后回车,服务器会回应。
4、输入 bye 或 exit 可关闭连接。
“点赞有美意,赞赏是鼓励”