多人版服務端

2022-01-23 18:35:35 字數 2114 閱讀 7347

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...