天才教育網(wǎng)合作機構 > 編程語言培訓機構 > Python培訓機構 >

全國python學習中心

歡迎您!
朋友圈

400-850-8622

全國統(tǒng)一學習專線 9:00-21:00

位置:編程語言培訓資訊 > Python培訓資訊 > python網(wǎng)絡編程,Python 中的網(wǎng)絡編程

python網(wǎng)絡編程,Python 中的網(wǎng)絡編程

日期:2021-07-22 10:28:06     瀏覽:180    來源:全國python學習中心
核心提示:不管你是待業(yè)還是失業(yè),在這個被互聯(lián)網(wǎng)圍繞的時代里,選擇python網(wǎng)絡編程,就多了一項技能,還怕找不到工作?,還怕不好找工作?小編就來告訴你這個專業(yè)的優(yōu)勢到底體現(xiàn)在哪里:Python 中的網(wǎng)絡編程,Python基礎教程

不管你是待業(yè)還是失業(yè),在這個被互聯(lián)網(wǎng)圍繞的時代里,選擇python網(wǎng)絡編程,就多了一項技能,還怕找不到工作?,還怕不好找工作?小編就來告訴你這個專業(yè)的優(yōu)勢到底體現(xiàn)在哪里:Python 中的網(wǎng)絡編程,Python基礎教程,第十五講,網(wǎng)絡編程(一)Socket詳解,關于Python的3個謊言,別再盲目學Python了(含視頻及書籍資源)??。

1.Python 中的網(wǎng)絡編程

你怎么還在用Python寫的單機版程序?因為我現(xiàn)在才剛學不久 現(xiàn)在開發(fā)的基本上都是互聯(lián)網(wǎng)程序了,你要不要跟我一起學一下用Python網(wǎng)絡編程?哇!真的嗎?大佬求帶! 低調(diào)低調(diào),說到網(wǎng)絡編程,那么我們先要了解互聯(lián)網(wǎng)。我了解,互聯(lián)網(wǎng)就是把許多網(wǎng)絡連接起來。 恩,不錯,那你知道什么是TCP,UDP嗎?em,以前聽過,現(xiàn)在有點忘了,你可以給我說道說道嗎? 可以,我們以前的計算機網(wǎng)絡,為了能夠互相通信,很多廠商都有自己的一套協(xié)議,這就弄得很亂,因為互不兼容,所以通信起來很費勁。后來呢,為了讓成千上萬的計算機連接起來,定義了兩個標準的協(xié)議,一個是TCP,一個是 IP,也就是我們現(xiàn)在簡稱的 TCP/IP 協(xié)議。也就是說我們遵循 TCP/IP 協(xié)議就可以互聯(lián)了是吧! 恩,通信的時候,雙方要知道對方的標識,才能通信。那。。大佬能告訴我下 TCP 和 IP 的區(qū)別嗎? 當然可以,那我先告訴你 IP 協(xié)議吧,假如我要發(fā)信息給你,我們都在互聯(lián)網(wǎng)上,都有自己的 IP 地址和路由,那么當我發(fā)信息給你的時候呢,IP 協(xié)議就負責將數(shù)據(jù)進行傳輸,這些數(shù)據(jù)被分割成一小塊一小塊的,通過 IP 包給發(fā)送過去。因為們之間在互聯(lián)網(wǎng)上是有很多鏈路的,所以路由就會將一小塊一小塊的數(shù)據(jù)包逐個進行轉(zhuǎn)發(fā),直到發(fā)送到你的IP地址。但是它不能夠保證數(shù)據(jù)都能到達,也保證不了能夠按順序的到達。啊~那如果丟失怎么辦?有什么辦法嗎? 有!那就是 TCP 協(xié)議,TCP協(xié)議建立在IP協(xié)議之上的。TCP協(xié)議會建立可靠連接,保證數(shù)據(jù)包按順序到達。TCP協(xié)議會通過握手建立連接,確保對方按順序收到,如果包丟掉了,就自動的重新再發(fā)。哦,明白了,那剛剛你說的 UDP 又是? 我們已經(jīng)知道了 TCP 是面向連接的,比較可靠,而UDP協(xié)議呢,它是面向無連接的,也就是我只要知道你的IP地址和端口就可以直接給你發(fā)送數(shù)據(jù)了,不需要先跟你握手,不過數(shù)據(jù)能不能到達就不知道了。哦,明白,就是TCP可靠,UDP傳輸效率高。 對頭,所以呢,如果不要求數(shù)據(jù)可靠到達的話就可以用UDP。那么接下來我們就用 Python 來進行 TCP 和 UDP 的編程吧。太好了??! 不過在此之前跟你講一下 Socket 的東西,因為等下我們要用到,Socket 在互聯(lián)網(wǎng)編程中表示建立了一個互聯(lián)網(wǎng)連接,Socket知道了對方的IP地址、端口號、協(xié)議,就可以建立連接了。恩,感謝大佬,明白了。 ok,那我們開始吧!1 Python 中的 TCP 編程1.1 TCP客戶端的編寫我們現(xiàn)在訪問一些網(wǎng)頁什么的,這些網(wǎng)頁是在服務器端的,而我們訪問的設備屬于客戶端。比如我們現(xiàn)在通過瀏覽器訪問這個地址: Python 來建立可靠的 TCP 連接,獲取到這些圖片呢?# 導入socket這個庫 import socket # 創(chuàng)建一個socket對象 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 開始建立TCP連接 s.connect(("www.meizitu.com",80)) # 連接后,發(fā)送請求 s.send(b'GET / HTTP/1.1\r\nHost: www.meizitu.com\r\: close\r\n\r\n') # 接收數(shù)據(jù) buffer = [] while True: d = s.recv(1024) if d: buffer.append(d) else: break # 把字節(jié)連接起來 data = b''.join(buffer) # 關閉連接 s.close() # 把數(shù)據(jù)讀取出來 with open('meizi.html','wb') as f: f.write(data) 運行之后,我么就有了咱們的妹紙文件:打開有驚喜。 這就是建立TCP連接,然后客戶端向服務端發(fā)送請求的過程了。嗯嗯嗯,我懂了,我這就去試試,小姐姐等我。 瞧把你急的,服務端怎么寫不了解一下?要啊,見笑見笑,我把紙巾收回去先。1.2 TCP 服務端的編寫服務端一般都是一直在運行著的,等待著客戶端來連接,然后給出請求響應,服務端需要提供 ip 地址和端口給客戶端去連接。首先我們來寫一個簡單服務端的:import socket # 創(chuàng)建socket對象 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 綁定監(jiān)聽端口 s.bind(('127.0.0.1',8888)) # 監(jiān)聽 s.listen(1) while True: # 接收連接 sock,addr = s.accept() print("有人連進來了") sock.send(b'hei man, are you ok?') sock.close當有人連接進來我們就給他發(fā)一句:hei man,are you ok ?接著我們再來寫個客戶端的連接過去:# 導入socket這個庫 import socket # 創(chuàng)建一個socket對象 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 開始建立TCP連接 s.connect(("127.0.0.1",8888)) # 接收數(shù)據(jù) buffer = [] d = s.recv(1024) buffer.append(d) # 把字節(jié)連接起來 data = b''.join(buffer) print(data) # 關閉連接 s.close()然后先運行我們的服務端,再運行客戶端: 這就是TCP了,這里我就模擬自己一個人來連接,如果多個連接就要開啟多個線程,懂了么?懂了懂了,謝謝大佬,給~ 肥皂就不必了,我是直男。不好意思,我剛剛拿錯了,對了,大佬,那我怎么使用Python來編寫UDP協(xié)議的呢? 你已經(jīng)知道了 TCP ,那么 UDP 也差不多的,不過UDP更簡單一些,它不需要建立可靠的連接,直接請求就可以了,我寫個代碼給你看看吧。2 Python中的 UDP 編程我們來先寫服務端:import socket # 創(chuàng)建socket對象,這里傳入的是SOCK_DGRAM,代表UDP s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 綁定監(jiān)聽端口 s.bind(('127.0.0.1',8090)) while True: # 接收連接 data,addr = s.recvfrom(1024) print(addr) s.sendto(b'hei man, are you ok?',addr)可以看到,在這里我們不需要跟對方連接,只要知道地址就直接發(fā)送過去就可以了??蛻舳耍篿mport socket # 創(chuàng)建一個socket對象 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.sendto(b'ha',("127.0.0.1",8090)) # 接收數(shù)據(jù) print(s.recv(1024).decode('utf-8')) # 關閉連接 s.close()運行如下: 這就是UDP。感謝大佬,我去試一下 恩,去吧,少看點妹紙圖。關注我,讓你像看小黃文一樣輕松學到 Python 的所有!ps:還沒獲取我精心準備的 Python 電子書和思維導圖等干貨的可以在我的公眾號「學習Python的正確姿勢」中發(fā)送 python 免費獲取哦! 點贊,轉(zhuǎn)發(fā)到朋友圈是一種支持

2.Python基礎教程,第十五講,網(wǎng)絡編程(一)Socket詳解

網(wǎng)絡編程的重要性不低于數(shù)據(jù)庫操作,而且兩者通常是同時存在,比如用python寫一個爬蟲程序,最終抓取的數(shù)據(jù)保存入庫,寫了一個web項目,用戶注冊,登錄,提交訂單等數(shù)據(jù)最終也要保存到我們的數(shù)據(jù)庫中,可見網(wǎng)絡編程的重要性。所以我會拿出三講的時間,分別介紹python中socket編程,爬蟲和web服務器。 和大家一起理解網(wǎng)絡編程。學完此次課程,我能做什么?學完此次課程,我們可以使用socket建立一個簡易的socket服務器和socket客戶端,并且可以進行通信。學習此次課程,需要多久?5-10分鐘課程內(nèi)容什么是socket?socket翻譯過來稱為套接字,是一個基本的網(wǎng)絡組件,過于詳細的介紹大家可以百度一下,不在這里說了,只講幾個項目中的重點:socket提供長連接,建立兩個點之間的信息通道;需要編寫socket服務器端和socket應用端,可以理解為聊天程序的服務器和聊天程序的客戶端。為什么要使用socket?想一下如何實現(xiàn)一個web聊天程序?如果沒有websocket的相關知識,會不會很low的用ajax實現(xiàn)?每隔5秒請求一次服務器看有沒有消息返回。這樣做的缺點很明顯:死循環(huán),無限請求服務器,對服務器壓力增大。實時性差,無法*時間收到消息,需要等待下次循環(huán)。看一下Ajax方式的示意圖:有了socket這個問題就可以迎刃而解,首先客戶端與服務端建立長鏈接,服務器可以接受信息,也可以主動推送信息給已連接的客戶端程序,而客戶端可以主動發(fā)送給服務器信息,也可以被動的接受服務器的推送信息。看一下Socket方式示意圖:很明顯socket和http相比是長鏈接,雙向通信,11點58分11秒客戶端1給服務器發(fā)送了一條信息,服務器接收后立即推送給客戶端2,客戶端2通過接受方法,處理信息,顯示給用戶,優(yōu)點是不是很明顯?趕緊學習一下如何使用吧。上面已經(jīng)說過socket要編寫服務端和客戶端的程序,那我們先寫一下用于監(jiān)聽的服務端:注意點:*步:創(chuàng)建socket鏈接s = socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)AF_INET:使用ipv4的方式通訊,默認即可。type:SOCK_STREAM 是 TCP方式, SOCK_DGRAM 是 UDP方式鏈接,關于tcp和udp的協(xié)議理解大家記住TCP數(shù)據(jù)傳輸可靠,效率低于UDP。相反UDP不確保數(shù)據(jù)是否傳輸成功,效率高。第二步:bind()函數(shù),綁定ip地址和端口號,linux下端口號小于1024的為系統(tǒng)保留,使用需要root權限,為了保證程序正常運行,*使用1024以上的端口。第三步:list()函數(shù),設置允許排隊等待鏈接的數(shù)量,由于accept為阻塞方法,所以要設置等待鏈接的數(shù)量,后面我們會講如何解決阻塞。第四步:接收信息,輸出信息。看一下客戶端的代碼:客戶端相對來說比較簡單,創(chuàng)建鏈接后,使用connect()鏈接服務器即可??匆幌逻\行結果:服務端打印出客戶端發(fā)來的信息Hello,而客戶端輸出了 服務端返回的信息。使用python實現(xiàn)一個socket服務器就是這么簡單,其他功能也是在這個基礎上來實現(xiàn),無非是接受,轉(zhuǎn)發(fā),處理各類消息。小結今天我們學習了,Python中的socket,了解了如何建立一個socket服務器程序,以及客戶端如何編寫,了解了整體的流程,后期我們會在這個基礎上結合wxpython來實現(xiàn)一個聊天軟件。接下來學習什么?接下來,我們會學習一下大名鼎鼎的爬蟲,通過python如何快速實現(xiàn)一個簡易爬蟲。關注公眾號,回復 Python基礎 下載全部代碼+PDF版電子書

3.關于Python的3個謊言,別再盲目學Python了(含視頻及書籍資源)

本人18年自學Python,現(xiàn)在是一名前端開發(fā)。雖然不是大佬,但我還是想先潑點冷水!不要被市面上的各種Python培訓廣告沖昏了頭腦:① 學完Python,并不能立馬拿一兩萬的工資,甚至可能找不到工作?、赑ython也沒有那么簡單,不是有手就行?、蹌e想著1個月、2個月就能學會,你至少得騰出半年時間全職學習!如果你還是執(zhí)意要學Python,那么好,接下來我們看看怎么學。Python作為一門腳本語言,難度上相較于其他語言略微簡單點。但對于沒有計算機基礎的人來說,可能最開始配置Python編譯環(huán)境都能讓他望而卻步。這里推薦一個無需安裝配置的在線編程平臺(新手可以先在線寫一段時間的代碼,適應下)邊學邊練,零基礎在線編程學習平臺 1、Python學習路線圖學習一定不是盲目的,只有先明確了要學哪些東西,怎么學,才能更高效地去學Python。這是Python的整個知識體系圖譜,對于新手來說,沒必要學那么多。先把Python基礎和進階知識吃透,才是入門的關鍵。后續(xù)你是往前端開發(fā)深造,還是去新潮時髦的大數(shù)據(jù)、人工智能,就全憑自己的興趣。但我相信這時候的你,應該不會像現(xiàn)在這么迷茫。2、關于如何學Python其實網(wǎng)上的Python課程很多,都是比較有體系的。學Python入門和進階的知識,用網(wǎng)課完全足夠。但Python本質(zhì)上是對一門語言工具的運用,實戰(zhàn)比理論更重要。我們在學習的時候一定要多敲、多練、多思考?。。懘a不只是跟著視頻課或者照著書本寫完就行的,我們要理清每行代碼的邏輯。剛開始學,*對每一句代碼都加以注釋,幫助我們理清邏輯,加深印象。同時,學完一個知識點后應該多去找對應的案例來練習,做到理論與實戰(zhàn)的深度結合。推薦一套免費的Python課:Python入門到精通137講 這套Python課的每一個知識點講完,都會有對應的實戰(zhàn)案例來練習,強烈推薦給新手!3、Python學習資源Python學習網(wǎng)站名稱鏈接說明代碼課堂 Py編碼規(guī)范中文版 Code Examples Module of the Week Py標準庫的使用菜鳥教程 cookbook》算法類:《算法圖解》《Python算法》《算法導論》計算機網(wǎng)絡書籍:《計算機網(wǎng)絡:自頂而下》《TCP/IP詳解1:協(xié)議》《計算機網(wǎng)絡基礎》*,自學Python最重要的就是心態(tài)。我們在學習過程中必然會遇到很多難題,可能自己想破腦袋都無法解決。這都是正常的,千萬別急著否定自己,懷疑自己。找一個靠譜點的師兄,沒事知乎一下,其實這些難題也就迎刃而解了。

就拿大數(shù)據(jù)說話,優(yōu)勢一目了然,從事IT行業(yè),打開IT行業(yè)的新大門,找到適合自己的培訓機構,進行專業(yè)和系統(tǒng)的學習。

本文由 全國python學習中心 整理發(fā)布。更多培訓課程,學習資訊,課程優(yōu)惠,課程開班,學校地址等學校信息,可以留下你的聯(lián)系方式,讓課程老師跟你詳細解答:
咨詢電話:400-850-8622

如果本頁不是您要找的課程,您也可以百度查找一下: