import socket
import threading
defhandle_client_request
(ip_port, new_client)
:print
("客戶端的ip和埠號為:"
, ip_port)
# 5.接收客戶端的連線請求
# 收發訊息都是用返回的這個新的套接字
while
true
: recv_data = new_client.recv(
1024
)if recv_data:
print
("接收的資料長度是:"
,len
(recv_data)
)# 對二進位制資料進行解碼變成字串
recv_content = recv_data.decode(
"gbk"
)print
("接收客戶端的資料為:"
, recv_content)
send_content =
"問題正在處理中..."
# 對字串進行編碼
send_data = send_content.encode(
"gbk"
)# 6.傳送資料到客戶端
new_client.send(send_data)
else
:# 客戶端關閉連線
print
("客戶端下線了:"
, ip_port)
break
# 關閉服務於客戶端套接字,表示和客戶端終止通訊
new_client.close(
)if __name__ ==
'__main__'
:# 1.建立tcp服務端套接字
# af_iner:ipv4,af_inet6:ipv6
tcp_server_socket = socket.socket(socket.af_inet, socket.sock_stream)
# 設定埠號復用,表示意思:服務端程式退出埠號立即釋放
# 1. sol_socket:表示當前套接字
# 2. so_reuseaddr:表示復用埠號的選項
# 3. true:確定復用
tcp_server_socket.setsockopt(socket.sol_socket, socket.so_reuseaddr,
true
)# 2.繫結埠號
# 第乙個引數表示ip位址,一般不用指定,表示 本機的任何ip計科
# 第二個引數表示埠號
tcp_server_socket.bind((""
,9090))
# 3.設定監聽
# 128:表示最大等待獎建立連線的個數
tcp_server_socket.listen(
128)
# 4.等待接受客戶端的連線請求
# 注意點:每次當客戶端和服務端建立連線成功都會返回乙個新的套接字
# tcp_server_socket只負責等待接受客戶端的連線請求,收發訊息不使用該套接字
# 迴圈等待接受客戶端的連線請求
while
true
: new_client, ip_port = tcp_server_socket.accept(
)# **執行到此,說明客戶端和服務端建立連線成功
# 當客戶端和服務端建立連線成功,建立子執行緒,讓子執行緒專門負責接收客戶端的訊息
sub_thread = threading.thread(target=handle_client_request, args=
(ip_port, new_client)
)# 設定守護主線程,主線程退出子執行緒直接銷毀
sub_thread.setdaemon(
true
)# 啟動子執行緒執行對應的任務
sub_thread.start(
)# 7. 關閉服務端套接字,表示服務端以後不再等待接受客戶端的連線請求
# tcp_server_socket.close() # 因為服務端的程式需要一直執行,所以關閉服務端套接字的**可以省略不寫
python tcp服務端多人聊天
import socket defcreate socket 建立套接字 return socket.socket socket.af inet,socket.sock stream sock socket.socket socket.af inet,socket.sock stream retur...
HTTP服務端JSON服務端
最後更新日期 2014 5 18 author kagula 內容簡介 cppcms是個開源web開發框架,通過它可以很容易實現http服務和json服務,這裡介紹cppcms開發環境的搭建。寫乙個cppcms測試程式,它建立http服務,向瀏覽器返回hello,world頁面。cppcms依賴的一...
typescript版的react服務端渲染
router.tsx 路由 function routerconfig ssr.tsx 匹配路徑 export default url string object,context any,store any renderfullpage.ts 渲染頁面 const renderfullpage ct...