日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

gj10 python socket编程

發(fā)布時(shí)間:2024/9/3 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gj10 python socket编程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

10.1 HTTP、Socket、TCP這幾個(gè)概念


?? 五層網(wǎng)絡(luò)模型

socket 不屬于任何協(xié)議,是一個(gè)API,通過(guò)socket 可以和傳輸層的打交道,然后在之上可以實(shí)現(xiàn)自己的功能和協(xié)議

10.2 client和server實(shí)現(xiàn)通信

Socket編程

http 是短連接無(wú)狀態(tài)

10.3 socket實(shí)現(xiàn)聊天和多用戶連接

import socket import threadingserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('127.0.0.1', 8000)) server.listen(5)def handle_sock(sock, addr):while True:data = sock.recv(1024)print(data.decode("utf8"))re_data = input("s>>>")sock.send(re_data.encode("utf8"))# 獲取從客戶端發(fā)送的數(shù)據(jù) # 一次獲取1k的數(shù)據(jù) while True:sock, addr = server.accept()# 用線程去處理新接收的連接(用戶)client_thread = threading.Thread(target=handle_sock, args=(sock, addr))client_thread.start()# data = sock.recv(1024)# print(data.decode("utf8"))# re_data = input()# sock.send(re_data.encode("utf8"))# server.close()# sock.close() import socketclient = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # ipv4 tcp client.connect(('127.0.0.1', 8000)) while True:re_data = input(">>>")client.send(re_data.encode("utf8"))data = client.recv(1024)print(data.decode("utf8")) # client.send("bobby".encode("utf8")) # data = client.recv(1024) # print (data.decode("utf8")) # client.close()

10.4 socket模擬http請(qǐng)求

#requests -> urlib -> socket import socket from urllib.parse import urlparsedef get_url(url):#通過(guò)socket請(qǐng)求htmlurl = urlparse(url)host = url.netlocpath = url.pathif path == "":path = "/"#建立socket連接client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# client.setblocking(False)client.connect((host, 80)) #阻塞不會(huì)消耗cpu#不停的詢問(wèn)連接是否建立好, 需要while循環(huán)不停的去檢查狀態(tài)#做計(jì)算任務(wù)或者再次發(fā)起其他的連接請(qǐng)求client.send("GET {} HTTP/1.1\r\nHost:{}\r\nConnection:close\r\n\r\n".format(path, host).encode("utf8"))data = b""while True:d = client.recv(1024)if d:data += delse:breakdata = data.decode("utf8")html_data = data.split("\r\n\r\n")[1]print(html_data)client.close()if __name__ == "__main__":import timestart_time = time.time()# for url in range(20):# # url = "http://www.baidu.com/?goods/{}/".format(url)# # get_url(url)url = "http://www.baidu.com"get_url(url)print(time.time()-start_time)

-

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的gj10 python socket编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。