TCP 基於連接的、 是連續的、 可靠的、 效率⽐較低、 更像是打電話, 聊天的過程中不能中斷。
傳輸控制協議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議
服務器端
# tcp_server.py import socket sk = socket.socket() # 創建socket對象 sk.bind(("127.0.0.1", 9998)) # 綁定IP和端口 sk.listen() # 開啟監聽 conn, address = sk.accept() # 等待客戶端連接 阻塞 while 1: # 讓服務端和客戶端循環通信 send_msg = input(">>>:").strip() # 要發送的消息 conn.send(send_msg.encode("utf-8")) # 發送消息給客戶端 if send_msg.upper() == "BYE": # 如果發送的消息是BYE就退出循環 break recv_msg = conn.recv(1024) # 接收來自客戶端的消息 print("來自客戶端的消息:", recv_msg.decode("utf-8")) if recv_msg.decode("utf-8").upper() == "BYE": # 如果來自客戶端的消息是BYE就退出循環 break conn.close() # 關閉conn連接 sk.close() # 關閉sk連接
socket套接字 port|IP|mac|數據,所以叫套接字
tcp服務端
1、導入socket模塊
2、創建socket對象
3、綁定IP和端口
4、開啟監聽
5、等待客戶端連接,阻塞
6、發送消息給客戶端,阻塞
7、接收來自客戶端的消息
8、關閉conn連接
9、關閉socket連接
客戶端
# tcp_client.py import socket sk = socket.socket() # 創建socket對象 sk.connect(("127.0.0.1", 9998)) # 連接服務端 while 1: # 服務端和客戶端循環通訊 recv_msg = sk.recv(1024) # 接收來自服務端的消息 print("來自服務端的消息:", recv_msg.decode("utf-8")) if recv_msg.decode("utf-8").upper() == "BYE": # 如果來自服務端的消息是BYE就直接退出循環 break send_msg = input(">>>:").strip() # 要發送給服務端的消息 sk.send(send_msg.encode("utf-8")) # 發送消息給服務端 if send_msg.upper() == "BYE": # 如果發送的消息是BYE就直接退出循環 break sk.close() # 關閉sk連接
tcp客戶端:
1、導入socket模塊
2、創建socket對象
3、建立socket連接
4、接收來自於服務端的消息
5、發送消息給客戶端
6、關閉socket連接
注意:
1、先啟動服務器端程序,再啟動客戶端程序。
2、服務器端先發送消息,客戶端收到消息后,再發送消息給服務器端。(程序怎么寫,誰先發送消息)