python實現多個客戶端與服務器端持續交互程序


1. 客戶端

# 1 創建套接字對象
import socket
# IPV4/TCP 協議
tcp_client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 2 和服務器端建立連接
tcp_client_socket.connect(('192.168.1.10',8080))
# 3 發送數據,必須是字節流
# encode(把字符串轉為bytes) decode(把bytes轉為字符串)
while True:
data = input('發送')
if data != '*':
data = data.encode('gbk')
tcp_client_socket.send(data)
# 4 接收服務器返回的數據 recv(字節大小)
recv_data = tcp_client_socket.recv(1024).decode('gbk')
print('服務器:', recv_data)
# 5 關閉套接字對象
else:
tcp_client_socket.close()
exit()

2. 服務器端

# 導入socket和threading
import socket
import threading
# 定義handle_client_request 循環以保持與客戶端的連接,並能持續互相傳遞消息
def handle_client_request(service_client_socket,ip_port):
while True:
     # 5 接收數據,最大接收為1024字符 
recv_data = service_client_socket.recv(1024)
if recv_data:
print(recv_data.decode('gbk'),ip_port) # 將二進制格式轉換為'gbk'
       # 6 服務器返回數據
back = f'自動回復:歡迎,您發送的數據為{recv_data.decode("gbk")}'
service_client_socket.send(back.encode('gbk')) # 將'gbk'格式轉換為二進制
else:
print('客戶端下線',ip_port)
break
   # 7 關閉套接字對象
service_client_socket.close()


if __name__ == '__main__':
   # 1 創建套接字對象
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   # 設置端口號復用
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
   # 2 綁定IP和端口,ip不寫或寫'127.0.0.1'都是主機本身
tcp_server_socket.bind(('',8080))
   # 3 設置監聽,一般為5,最大為128
tcp_server_socket.listen(5)
while True:
     # 4 接收客戶端套接字對象
service_client_socket, ip_port = tcp_server_socket.accept()
     # 創建線程,傳入套接字對象數據
sub_thread = threading.Thread(target=handle_client_request,args=(service_client_socket,ip_port))
     # 守護主線程
sub_thread.setDaemon(True)
     # 運行線程
sub_thread.start()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM