2、基礎語法以後能夠搭載服務器練習:html
教程python
1、一、Python 搭建環境、 初學基本語法 :Python基本語法 正則表達式
二、推薦 IDE : PyCharm CE 下載編程
菜鳥教程都是基礎語法,能夠對python有一個簡單對認識,找到其餘語言對共同指出,好入手一些。服務器
三、基礎語法看完後推薦書籍:名爲:Python3官方文檔 的譯文網絡
對基礎對鞏固提高,總有不一樣之處 。socket
⚠️:ide
一、import function 與 from module import function 的區別,後者會攪亂當前的命名空間,當前已經定義的名字會被導入的名字重寫
四、系統對提高Python : Head First Python函數
一、構建引用模塊 -> python3 setup.py sdist --> sudo python3 setup.py install安裝本地副本--><Head Frist Python P40-46>post
二、向PyPl上傳代碼 <P47+>
4.編寫socket測試程序
(a)編寫server的步驟
第一步是建立socket對象。調用socket構造函數。如:
socket = socket.socket( family, type )
family參數表明地址家族,可爲AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用於同一臺機器上的進程間通訊。
type參數表明套接字類型,可爲SOCK_STREAM(流套接字)和SOCK_DGRAM(數據報套接字)。
第二步是將socket綁定到指定地址。這是經過socket對象的bind方法來實現的:
socket.bind( address )
由AF_INET所建立的套接字,address地址必須是一個雙元素元組,格式是(host,port)。host表明主機,port表明端口號。若是端口號正在使用、主機名不正確或端口已被保留,bind方法將引起socket.error異常。
第三步是使用socket套接字的listen方法接收鏈接請求。
socket.listen( backlog )
backlog指定最多容許多少個客戶鏈接到服務器。它的值至少爲1。收到鏈接請求後,這些請求須要排隊,若是隊列滿,就拒絕請求。
第四步是服務器套接字經過socket的accept方法等待客戶請求一個鏈接。
connection, address = socket.accept()
調 用accept方法時,socket會時入「waiting」狀態。客戶請求鏈接時,方法創建鏈接並返回服務器。accept方法返回一個含有兩個元素的元組(connection,address)。第一個元素connection是新的socket對象,服務器必須經過它與客戶通訊;第二個元素 address是客戶的Internet地址。
第 五步是處理階段,服務器和客戶端經過send和recv方法通訊(傳輸 數據)。服務器調用send,並採用字符串形式向客戶發送信息。send方法返回已發送的字符個數。服務器使用recv方法從客戶接收信息。調用recv 時,服務器必須指定一個整數,它對應於可經過本次方法調用來接收的最大數據量。recv方法在接收數據時會進入「blocked」狀態,最後返回一個字符 串,用它表示收到的數據。若是發送的數據量超過了recv所容許的,數據會被截短。多餘的數據將緩衝於接收端。之後調用recv時,多餘的數據會從緩衝區 刪除(以及自上次調用recv以來,客戶可能發送的其它任何數據)。
傳輸結束,服務器調用socket的close方法關閉鏈接。
(b)編寫client的步驟
首先建立一個socket以鏈接服務器:socket =socket.socket( family, type )
使用socket的connect方法鏈接服務器。對於AF_INET家族,鏈接格式以下:
socket.connect( (host,port) )
host表明服務器主機名或IP,port表明服務器進程所綁定的端口號。如鏈接成功,客戶就可經過套接字與服務器通訊,若是鏈接失敗,會引起socket.error異常。
處理階段,客戶和服務器將經過send方法和recv方法通訊。
傳輸結束,客戶經過調用socket的close方法關閉鏈接。
5.實例源碼:python socket半雙工聊天