建立乙個tcp/socket伺服器接收客戶端傳送的資訊並返回給客戶端
以多執行緒方式實現接收客戶端資訊
將客戶端傳送的資訊解碼輸出
建立乙個tcp/socket服務端
寫乙個接收訊息的方法,可以接收客戶端訊息並解碼輸出
服務端被動監聽,每有乙個客戶端連線就建立乙個子執行緒執行接收訊息方法
單程序輪詢實現併發伺服器
#!/usr/bin/env python3
# coding=utf-8
from socket import *
def main():
# 1、建立socket
server_socket = socket(af_inet, sock_stream)
# 2、設定埠復用
server_socket.setsockopt(sol_socket, so_reuseaddr, true)
# 3、設定為非堵塞
server_socket.setblocking(false)
# 4、繫結埠
server_socket.bind(("", 8888))
# 5、設定為被動socket
server_socket.listen(32)
print("listen...")
# 儲存所有已連線的客戶端
client_list =
while true:
# 等待客戶端的到來
try:
client_socket, client_addr = server_socket.accept()
except:
pass
else:
print("客戶端:[{},{}]已連線上".format(client_addr[0], client_addr[1]))
# 設定連線上來的客戶端為非堵塞
client_socket.setblocking(false)
# 遍歷所有客戶端是否有資料發過來
for client_socket, client_addr in client_list:
try:
data = client_socket.recv(1024)
except:
pass
else:
if data:
print("[{},{}]>>{}".format(client_addr[0], client_addr[1], data.decode("utf-8")))
else:
client_socket.close()
client_list.remove((client_socket, client_addr))
print("客戶端:[{},{}]已斷開連線".format(client_addr[0], client_addr[1]))
if __name__ == "__main__":
main()
多執行緒實現併發伺服器
#!/usr/bin/env python3
# coding=utf-8
from socket import *
from threading import thread
def recv_data(client_socket, client_addr):
while true:
data = client_socket.recv(1024)
if data:
print("[{},{}]>>{}".format(client_addr[0], client_addr[1], data.decode("utf-8")))
client_socket.send(data)
else:
print("客戶端:[{},{}]已斷開連線!".format(client_addr[0], client_addr[1]))
break
client_socket.close()
def main():
# 1、建立socket
server_socket = socket(af_inet, sock_stream)
# 2、設定埠復用
server_socket.setsockopt(sol_socket, so_reuseaddr, true)
# 3、繫結埠
server_socket.bind(("", 8888))
# 4、設定為被動socket
server_socket.listen(64)
print("listen...")
try:
while true:
# 5、等待客戶端連線
client_socket, client_addr = server_socket.accept()
print("新客戶:[{},{}]已連線".format(client_addr[0], client_addr[1]))
# 6、建立乙個執行緒處理客戶端的資料
t1 = thread(target=recv_data, args=(client_socket, client_addr))
# 7、設定執行緒守護
t1.setdaemon(true)
# 8、啟動執行緒
t1.start()
finally:
# 當為所有的客戶端服務完成之後再進行關閉,表示不再接收新的客戶端的連線
server_socket.close()
if __name__ == "__main__":
main()
Python網路程式設計之UDP
udp處理資料報,是一種無連線的協議 伺服器端 server socket.socket socket.af inet,socket.sock dgram 繫結ip server.bind 192.168.1.104 221 while true 接收 data,address server.rec...
Python網路程式設計之socket
socket是網路連線端點。例如當你的web瀏覽器請求ansheng.me的 時,你的web瀏覽器建立乙個socket並命令它去連線ansheng.me的web伺服器主機,web伺服器也對過來的請求在乙個socket上進行監聽。兩端使用各自的socket來傳送和接收資訊。在使用的時候,每個socke...
python網路程式設計之socket
socket是python網路程式設計中必不可少的模組,是內建模組,可以直接匯入。也稱其為套接字,是建立網路連線和會話的基礎。建立套接字 import socket s socket.socket help s s.close 關閉套接字建立套接字所需引數 socket.socket family ...