python黑馬程序員
通過python內置socket模塊,在電腦本地開發一個服務器,一個客戶端,連接后進行連續的聊天。服務器和客戶端均可輸入exit,主動退出連接。
服務器開發.py
import socket# 創建Socket對象
socket_server = socket.socket()
# 綁定ip地址和端口
socket_server.bind(("localhost", 8888))
# 監聽端口
socket_server.listen(1) # 整數參數,表示接受的連接數量
# 等待客戶端連接
# result: tuple = socket_server.accept()
# conn = result[0] #
# address = result[1]
conn, address = socket_server.accept() # 返回(連接對象,客戶端地址信息)
print(f"接收到了客戶端的連接,客戶端的信息是:{address}")while True:# 接受客戶端信息, 要使用客戶端和服務端的本次連接對象data:str = conn.recv(1024).decode("UTF-8")# recv接受的參數是緩沖區大小,返回bytes對象,用decode轉換為字符串對象print(f"客戶端發來的消息: {data}")# 發送回復消息msg = input("請輸入你要和客戶端回復的消息:")if msg == 'exit':breakmsg = msg.encode("UTF-8") # encode將字符串編碼為字節數組對象conn.send(msg)# 關閉連接
conn.close()
socket_server.close()
客戶端開發.py
import socket# 創建Socket對象
socket_client = socket.socket()
# 連接ip地址和端口
socket_client.connect(("localhost", 8888))while True:# 發送消息msg = input("請輸入要給服務端發送的消息:")if msg == 'exit':breaksocket_client.send(msg.encode("UTF-8"))# 接收返回消息recv_data = socket_client.recv(1024) # 緩沖區大小,recv方法是阻塞的,直到收到消息為止print(f"服務端回復的消息是:{recv_data.decode('UTF-8')}")# 關閉連接
socket_client.close()
效果: