server端:
1. 阻塞型套接字,不能滿足多個客戶端同時訪問
import socket
server = socket.socket()
server.bind((""127.0.0.1,8898))
while true:
server.listen(2) 2為最大同時連線數,python3.6以上有用
conn,addr = server.accept()
data = conn.recv(1024) 1024為最大接收位元組
conn.close() 伺服器連線關閉
圖例:2. 非阻塞形套接字,用單執行緒模擬多執行緒併發,實現多個客戶端同時訪問
import socket
server = socket.socket()
server.setblocking(false)
server.bind(("127.0.0.1",8898))
server.listen(5)
conn_list = 儲存客戶端請求
while true:
try:
conn,addr = server.accept()
conn.setblocking(false)
except blockingioerror:
pass
for conn in conn_list:
try:
data = conn.recv(1024)
if data:
print(data)
conn.send(data)
else:
conn.close()
conn_list.remove(conn)
except blockingioerror:
pass
圖例:
client端:
import socket
client = socket.socket()
client.connect(("127.0.0.1",8898))
client.send(b"hello")
client.close()
圖例:
監聽套接字 連線套接字
摘要 對於伺服器程式設計中最重要的一步等待並接受客戶的連線,那麼這一步在程式設計中如何完成,accept函式就是完成這一步的。它從核心中取出已經建立的客戶連線,然後把這個已經建立的連線返回給使用者程式,此時使用者程式就可以與自己的客戶進行點到點的通訊了。accept函式等待並接受客戶請求 inclu...
python套接字 python套接字基本使用
socket socket通常也稱作 套接字 用於描述ip位址和埠,應用程式通常通過 套接字 向網路發出請求或者應答網路請求,可以認為是一種計算機網路的資料結構,介面。它是網路程式設計的基礎 套接字還分為面向連線的和無連線的 第一種是指tcp型別套接字,在通訊前需要建立連線,這種連線是較為可靠的,使...
python套接字程式設計 python套接字程式設計
服務端 usr bin python coding utf 8 import socket s socket.socket host socket.gethostname port 12345 s.bind host,port s.listen 5 while true c,addr s.accep...