python提供流套接字(tcp)和資料報套接字(udp)。urlparse模組提供了用於解析url的函式,以及用於url處理的函式。
1. 伺服器端
要在python中建立具有tcp和流套接字的簡單伺服器,需要使用socket模組。利用該模組包含的函式和類定義,可生成通過網路通訊的程式。建立這個連線需要6個步驟:
a). 第一步是建立socket物件。呼叫socket建構函式。如:socket = socket.socket(family, type) family引數代表位址家族,可為af_inet或af_unix。af_inet家族包括internet位址,af_unix家族用於同一臺機器上的程序間通訊。type引數代表套接字型別,可為sock_stream(流套接字)和sock_dgram(資料報套接字)。
b). 第二步是將socket繫結到指定位址。這是通過socket物件的bind方法來實現的:socket.bind(address) 由af_inet所建立的套接字,address位址必須是乙個雙元素元組,格式是(host,port)。host代表主機,port代表埠號。如果埠號正在使用、主機名不正確或埠已被保留,bind方法將引發socket.error異常。
c). 第三步是使用socket套接字的listen方法接收連線請求。socket.listen(backlog) backlog指定最多允許多少個客戶連線到伺服器。它的值至少為1。收到連線請求後,這些請求需要排隊,如果佇列滿,就拒絕請求。
d). 第四步是伺服器套接字通過socket的accept方法等待客戶請求乙個連線。connection, address = socket.accept() 呼叫accept方法時,socket會進入「waiting」狀態。客戶請求連線時,方法建立連線並返回伺服器。accept方法返回乙個含有兩個元素的元組(connection,address)。第乙個元素connection是新的socket物件,伺服器必須通過它與客戶通訊;第二個元素 address是客戶的internet位址。
e). 第五步是處理階段,伺服器和客戶端通過send和recv方法通訊(傳輸資料)。伺服器呼叫send,並採用字串形式向客戶傳送資訊。send方法返回已傳送的字元個數。伺服器使用recv方法從客戶接收資訊。呼叫recv 時,伺服器必須指定乙個整數,它對應於可通過本次方法呼叫來接收的最大資料量。recv方法在接收資料時會進入「blocked」狀態,最後返回乙個字串,用它表示收到的資料。如果傳送的資料量超過了recv所允許的,資料會被截短。多餘的資料將緩衝於接收端。以後呼叫recv時,多餘的資料會從緩衝區刪除(以及自上次呼叫recv以來,客戶可能傳送的其它任何資料)。
f). 第六步,傳輸結束,伺服器呼叫socket的close方法關閉連線。
2. 客戶端
在python中建立乙個簡單客戶端需要4個步驟:
a). 第一步是建立乙個socket以連線伺服器:socket = socket.socket(family, type)
b). 第二步是使用socket的connect方法連線伺服器。對於af_inet家族,連線格式如下:socket.connect(host, port) host代表伺服器主機名或ip,port代表伺服器程序所繫結的埠號。如連線成功,客戶就可通過套接字與伺服器通訊,如果連線失敗,會引發 socket.error異常。
c). 第三步是處理階段,客戶和伺服器將通過send方法和recv方法通訊。
d). 第四步,傳輸結束,客戶通過呼叫socket的close方法關閉連線。
SEO一般步驟
seo並不是簡單的幾個秘訣或幾個建議,而是一項需要足夠耐心和細緻的腦力勞動。大體上,seo包括六個環節 2 架構分析 結構符合搜尋引擎的爬蟲喜好則有利於seo。架構分析包括 剔除 架構不良設計 實現樹狀目錄結構 導航與鏈結優化。3 目錄和頁面優化 seo不止是讓 首頁在搜尋引擎有好的排名,更重要的是...
jdbc的一般步驟
1.匯入jdbc驅動jar 2.註冊jdbc驅動 引數 驅動程式類名 class.forname 驅動程式類名 3.獲得connection物件 conn.getstatement 方法建立物件 用於執行sql語句 execute sql 執行任何sql,常用執行ddl executeupdate ...
爬蟲的一般步驟
希望下次寫 的時候可以嚴格按照這個步驟進行除錯,寫可維護的 1.建立乙個專案 scrapy startproject demo 1.根據需要設計字段 items.py 2.資料提取 spiders.py 1 針對沒有ban且沒有動態資料的 無需設定相應得策略 設定useragentmiddlewar...