天天看點

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網頁中找到.

首先我們來看一個簡單的示例:

python進階九_網絡程式設計(一)Python網絡程式設計一
python進階九_網絡程式設計(一)Python網絡程式設計一

在這個示例中,有幾點需要說明一下:

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,我們也來試一下:

python進階九_網絡程式設計(一)Python網絡程式設計一
python進階九_網絡程式設計(一)Python網絡程式設計一

在郵件發送這一塊,我試了很多次郵箱,發現163的郵箱一次成功,但是QQ郵箱總是登陸不上,花了好長時間都沒找到原因,頭有點暈了。。。還希望有過了解的朋友能夠指點一二。但平時用的最多的還是qq郵箱和gmail郵箱,前者行不通就試了一下後者,發現效果還挺好的,如下:

我們來看一下結果:

python進階九_網絡程式設計(一)Python網絡程式設計一
python進階九_網絡程式設計(一)Python網絡程式設計一

雖然Python對于網絡這一塊很是友善,但是學起來還是感覺問題多多,突然發現天亮了,好累,睡覺去了