#服務多客戶端tcp服務端開發 2 #方法說明
3 """
4 bind(host,port)表示繫結埠號,host是ip位址,ip位址一般不進
行繫結,表示本機的任何乙個ip位址都行,port是埠號
5 listen(backlog)表示設定監聽,backlog引數表示最大等待連線的》 個數
6 accept()表示等待接受客戶端的連線請求
7 """ 8 import
socket
9 import
threading
10 #
處理客戶端請求
11 def
client_socket(ip_port,new_client):#子執行緒來完成
12 print("
客戶端的ip和埠號為:
",ip_port)
13 while
true:
14 data = new_client.recv(1024)
15 if
data:
16 #
接受客戶端的收據
17 #
對二進位制資料進行解碼
18 recv_data = data.decode("
utf-8")
19 print("
接收客戶端的資料為:
",recv_data)
20 #
傳送資料到客戶端
21 client_data = "
最偉大"
22 send_data = client_data.encode("
utf-8")
23new_client.send(send_data)
24 else
: 25 print("
客戶端下線了:
",ip_port)
26 break
27 #
關閉服務與客戶端套接字,表示終止服務端與客戶端通訊
28new_client.close()
29 30 if
__name__ == "
__main__":
31 #
建立服務端套接字物件
tcp_server_socket =socket.socket(socket.af_inet,socket .sock_stream)
33 #
繫結埠號
34 #
ip位址一般不寫死,只要是本機電腦的任何乙個ip位址都行
35 tcp_server_socket.bind(("",8080))
36 #
設定埠號復用:服務端程式退出後埠立即釋放
37 #
1.socket.sol_socket:表示當前套接字
38 #
2.socket.so_reuseaddr:表示復用埠號的選項
39 #
3.true:確定復用
40tcp_server_socket.setsockopt(socket.sol_socket,socket.so_reuseaddr,true)
41 #
設定監聽
42 tcp_server_socket.listen(128)
43 #
等待客戶端的連線請求
44 #
注意點:每次當客戶端和服務端建立連線成功會返回乙個新的》 套接字new_client
45 #
tcp_server_socket套接字只負責接受連線請求,收發訊息只》 用返回的新套接字
46 while
true:
47 new_client,ip_port =tcp_server_socket.accept()
48 #
客戶端和服務端建立連線成功,建立子執行緒,讓子執行緒專
門負責接受客戶端訊息
49 sub_thread = threading.thread(target = client_socket,args =(ip_port,new_client))
50 #
設定守護主線程,主線程退出子執行緒直接銷毀
51sub_thread.setdaemon(true)
52 #
關閉服務端套接字
53sub_thread.start()
54 #
服務端需要一直執行
55 #
tcp_server_socket.close()
實現多工可以用程序或者執行緒來來完成
但開闢執行緒對資源的消耗比執行緒大,所以我們選擇建立子執行緒來完成伺服器服務於多客戶端
python網路程式設計 TCP網路程式設計
tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...
python網路程式設計 TCP
一 網路通訊模式 對於網路通訊,現在遵循的是tcp ip協議組。而現在設計的通訊模式中,主要使用的是客戶端 伺服器程式設計,所謂的客戶端就是我們使用者所用的軟體,而服務端則是程式開發人員根據客戶端的需要設計的服務模式,為了是滿足客戶端的要求,實現和客戶端進行正常通訊。二 套接字 通訊的端點 對於tc...
python筆記 網路程式設計 TCP程式設計(伺服器)
目錄 一 建立伺服器響應 1.1步驟 1.2完整 1.3執行 伺服器程序首先要繫結乙個埠並監聽來自其他客戶端的連線。如果某個客戶端連線過來了,伺服器就與該客戶端建立socket連線,隨後的通訊就靠這個socket連線了。所以,伺服器會開啟固定埠 比如80 監聽,每來乙個客戶端連線,就建立該socke...