python进阶九_网络编程
Python網絡編程一
一.一些基本概念
在Python網絡編程這一節中會涉及到很多網絡相關的術語,對于一些最基本的概念,如TCP/IP,Socket等等不再贅述,不明白的可以自己去查一查,對于一些常見但是可能不是很熟悉的術語這里做了一個簡要的介紹,后續遇到不會因此止步。
SNTP:簡單網絡時間協議(Simple?Network?Time??Protocol)簡單來說就是用來同步因特網中的計算機時鐘,需要注意的是這里的SNTP是用戶數據報(UDP)協議。
MIME:Multipurpose?Internet?Mail?Extensions)多用途互聯網郵件擴展類型,就是設定某種擴展名的文件用一種應用程序來打開的方式類型,當該擴展名文件被訪問的時候,瀏覽器會自動使用指定應用程序來打開。多用于指定一些客戶端自定義的文件名,以及一些媒體文件打開方式。
POP3:郵件協議的第三個版本,它是規定個人計算機如何連接到互聯網上的郵件服務器進行收發郵件的協議。它是因特網電子郵件的第一個離線協議標準,POP3協議允許用戶從服務器上把郵件存儲到本地主機(即自己的計算機)上,同時根據客戶端的操作刪除或保存在郵件服務器上的郵件,而POP3服務器則是遵循POP3協議的接收郵件服務器,用來接收電子郵件的。POP3協議是TCP/IP協議族中的一員,由RFC?1939?定義。本協議主要用于支持使用客戶端遠程管理在服務器上的電子郵件
SSL:安全套接層(Secure?Sockets?Layer?),及其繼任者傳輸層安全(Transport?Layer?Security,TLS)是為網絡通信提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡連接進行加密。
IRC:IRC是Internet?Relay?Chat?的英文縮寫,中文一般稱為互聯網中繼聊天。它是由芬蘭人Jarkko?Oikarinen于1988年首創的一種網絡聊天協議。經過十年的發展,目前世界上有超過60個國家提供了IRC的服務。IRC的工作原理非常簡單,您只要在自己的PC上運行客戶端軟件,然后通過因特網以IRC協議連接到一臺IRC服務器上即可。它的特點是速度非常之快,聊天時幾乎沒有延遲的現象,并且只占用很小的帶寬資源。所有用戶可以在一個被稱為\"Channel\"(頻道)的地方就某一話題進行交談或密談。每個IRC的使用者都有一個Nickname(昵稱)。
LDAP:LDAP是輕量目錄訪問協議,英文全稱是Lightweight?Directory?Access?Protocol,一般都簡稱為LDAP。它是基于X.500標準的,但是簡單多了并且可以根據需要定制。與X.500不同,LDAP支持TCP/IP,這對訪問Internet是必須的。LDAP的核心規范在RFC中都有定義,所有與LDAP相關的RFC都可以在LDAPman?RFC網頁中找到.
二.簡單的Socket通信
首先我們來看一個簡單的示例:
在這個示例中,有幾點需要說明一下:
1.這個示例中無論是在服務器端還是客戶端都頻繁使用了encode()和decode()轉碼和解碼,這是很必要的,否則會出現TypeError:'str'?does?not?support?the?buffer?interface,至于原因,可以查看一下Python3的官方文檔,官方文檔大體是這么個意思,就是說,從Python2到Python3的演變時,套接字傳送的數據全部轉變成Byte類型了,也即:
socket.send(bytes[,?flags])?形參為字節類型
socket.recv(bufsize[,?flags])?Receive?datafrom?the?socket.?The?return?value?is?a?bytes?object?representing?the?data?received.
?
所以需要用encode()和decode()轉碼和解碼,至于encode()和decode(),官方給出的解釋是這樣的:
Codec.encode(input[,?errors])
Encodes?the?object?input?and?returns?atuple?(output?object,?length?consumed).?Encoding?converts?a?string?object?to?abytes?object?using?a?particular?character?set?encoding
?
Codec.decode(input[,?errors])
Decodes?the?object?input?and?returns?atuple?(output?object,?length?consumed).?Decoding?converts?a?bytes?objectencoded?using?a?particular?character?set?encoding?to?a?string?object.
input?must?be?a?bytes?object?or?one?whichprovides?the?read-only?character?buffer?interface?–?for?example,?buffer?objectsand?memory?mapped?files
這里官方的解釋應該算是很明了了吧。
2.剛剛的示例中使用的是用戶數據報協議(UDP),并不關心可靠性,還有一種可靠協議TCP/IP,我們也來試一下:
三.一些常見的Socket運用
1.郵件發送
在郵件發送這一塊,我試了很多次郵箱,發現163的郵箱一次成功,但是QQ郵箱總是登陸不上,花了好長時間都沒找到原因,頭有點暈了。。。還希望有過了解的朋友能夠指點一二。但平時用的最多的還是qq郵箱和gmail郵箱,前者行不通就試了一下后者,發現效果還挺好的,如下:
我們來看一下結果:
我們來看一下結果:
雖然Python對于網絡這一塊很是方便,但是學起來還是感覺問題多多,突然發現天亮了,好累,睡覺去了
轉載于:https://www.cnblogs.com/ainima/p/6331115.html
總結
以上是生活随笔為你收集整理的python进阶九_网络编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wp如何代码实现锁屏
- 下一篇: 计数排序之python 实现源码