tcp協定:流式協定
服務端應該滿足的特性:
1、一直對外提供服務
2、并發地提供服務
服務端代碼(server.py):
import socket
# 1、買手機
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # SOCK_STREAM=》TCP協定
# 2、插手機卡
phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #就是它,在bind前加
phone.bind(("127.0.0.1", 8080)) # 本地回環
# 3、開機
phone.listen(5)
print('starting %s:%s' %("127.0.0.1", 8080))
# 4、等電話連結=>連結循環
while True:
conn, client_addr = phone.accept()
print(client_addr)
# 5、收/發消息=>通信循環
while True:
try:
data = conn.recv(1024) # 最大接收的位元組個數
if len(data) == 0: # 針對linux系統
break
print("收到的用戶端資料:", data.decode('utf-8'))
conn.send(data.upper())
except Exception: # 針對windows系統
break
# 6、關閉
conn.close() # 挂電話
phone.close() # 關機
用戶端(client.py):
import socket
# 1、買手機
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # SOCK_STREAM=》TCP協定
# 2、撥電話
phone.connect(("127.0.0.1", 8080))
# 3、發/收消息=>通信循環
while True:
msg = input(">>: ").strip()
phone.send(msg.encode('utf-8'))
data = phone.recv(1024)
print("服務的傳回的資料:", data.decode('utf-8'))
# 4、關閉
phone.close()