下面是一个完整的 TCP 服务端与客户端示例,适用于 Python 3,使用 socket 模块,并正确处理了中文传输与异常情况,支持基本的多轮通信。

TCP 服务端(server_tcp.py)

import socket

HOST = '127.0.0.1'  # 监听本地地址
PORT = 12345        # 自定义端口号

# 创建 TCP socket
server_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("客户端断开连接。")
            break

        msg = data.decode("utf-8")
        print("客户端发来:", msg)

        if msg.lower() in ["bye", "exit"]:
            conn.sendall("再见!".encode("utf-8"))
            break

        reply = 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:
            continue

        client_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 可关闭连接。

点赞有美意,赞赏是鼓励