---恢復內容開始---
http 協議有著 1.0 和1.1 在安卓爆發前都是用著 1,0 的協議
長連線 : 直接進行 三次握手 後拿完所有的資源 之後進行 四次揮手
下面是乙個單執行緒 不堵塞 長連線
importsocket
import
redef
service_client(new_socket, request):
"""為這個客戶端返回資料
"""#
1. 接收瀏覽器傳送過來的請求 ,即http請求
2. 返回http格式的資料,給瀏覽器
"""用來完成整體的控制
"""#
1. 建立套接字
tcp_server_socket =socket.socket(socket.af_inet, socket.sock_stream)
tcp_server_socket.setsockopt(socket.sol_socket, socket.so_reuseaddr, 1)
#2. 繫結
tcp_server_socket.bind(("", 7890))
#3. 變為監聽套接字
tcp_server_socket.listen(128)
tcp_server_socket.setblocking(false)
#將套接字變為非堵塞
client_socket_list =list()
while
true:
#4. 等待新客戶端的鏈結
try:
new_socket, client_addr =tcp_server_socket.accept()
except
exception as ret:
pass
else
: new_socket.setblocking(false)
for client_socket in
client_socket_list:
try:
recv_data = client_socket.recv(1024).decode("
utf-8")
except
exception as ret:
pass
else
:
ifrecv_data:
service_client(client_socket, recv_data)
else
: client_socket.close()
client_socket_list.remove(client_socket)
#關閉監聽套接字
tcp_server_socket.close()
if__name__ == "
__main__":
main()
長連線 短鏈結 長輪詢 短輪詢
原文 那就是一直認為,http連線分為長連線和短連線,而我們現在常用的都是http1.1,因此我們用的都是長連線。這句話其實只對了一半,我們現如今的http協議,大部分都是1.1的,因此我們平時用的基本上都是長連線。但是前半句是不對的,http協議根本沒有長短連線這一說,也正因為誤解了這個,導致對於...
tcp 長連線 短鏈結
1.2.2.tcp短連線 我們模擬一下tcp短連線的情況,client向server發起連線請求,server接到請求,然後雙方建立連線。client向server傳送訊息,server回應client,然後一次讀寫就完成了,這時候雙方任何乙個都可以發起close操作,不過一般都是client先發起...
Http長連線和短鏈結
http屬於應用層協議,所謂http的長連線和短鏈結本質上說的是tcp的長連線和短連線。只有tcp連線才有真正的長連線和短連線這一說法。所謂http 1.1起支援長連線,並不是http 1.1可以建立長連線,而是它支援以請求的方式進行連線的發起,該連線依然時基於tcp的 http 1.0預設使用短連...