下面是一個完整的 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 可關閉連接。
“點贊有美意,贊賞是鼓勵”