如何用python建立最簡單的伺服器
本文使用socket實現,
使用python訪問
下面,我們開始講解實現方法
import socket
# 1. 建立套接字並設定伺服器釋放
web_server= socket.socket(socket.AF_INET, socket.SOCK_STREAM,socket.IPPROTO_TCP)
.web_server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
# 2. 繫結埠
web_server.bind(("127.0.0.1", 26332))
# 3. 監聽套接字
web_serve.listen(128)
第一步:我們首先建立一個套接字,第一行,套接字的引數有3個,這裡不具體講解,只要將程式碼複製過去就可以了。第二行涉及到TCP3次握手和4次揮手,只要知道,當我們伺服器主動發起關閉客戶端連線時,或者意外中斷後,埠不會被佔用。
第二步:繫結埠,為什麼要繫結埠,因為你只有繫結埠別人才能知道如何找到你。
如果是在本地執行,就繫結127.0.0.1,埠號可以隨意輸入
如果是在遠端伺服器,就輸入遠端伺服器的IP地址。同時把安全規則把對應埠開放。
第三步:我們繫結埠以後,就要監聽埠,如果不監聽埠,就無法知道有人連線你了。
while True:
web_client,client_ip=web_serve。accept()
第四步:當我們繫結好埠以後,我們就要開始等待客戶端連線。如果客戶端連線,它才會進行下一步,如果沒有連線,它會阻塞在這一步。
import multiprocessing
process=multiprocessing.Process(target=web_requests,args=(web_client,))
process.start()
web_client.close() 鄭州治療婦科的醫院
第五步:當我們接收到客戶端連線後,我們就要為這個客戶端建立一個程式,去為它服務,因為程式是複製一份web_client,所以我們就可以把程式所指向的web_client給關了(程式所指向的由程式關閉),迴圈等待下一個客戶端連線
def web_requests(web_client):
web_requests=web_client.recv(1024).decode("utf-8")
定義一個程式函式,然後接收客戶端發來的資料,web_client.recv(1024)中recv(1024)是接收客戶端發來的資料,.decode(“utf-8”)是對客戶端發來的資料進行解碼
import re
web_request=web_requests.splitlines()[0] #將收到的資料轉為列表,取出第一行引數:GET /s?kw=hello,word HTTP/1.1
request_kw=re.findall("kw=(.*?).HTTP",web_request) [0] #取出收到的引數
我們在爬取百度的時候,經常會用到wd=,&pn=,所以在這裡,我們也使用傳參的方式kw=,讓伺服器收到我們的請求,並返回傳入的引數值,當我們收到請求時,我門就要開始返回資料
response_head="HTTP/1.1 200 OK\r\n\r\n".encode("utf8") #返回head
response_body=request_kw.encode("utf8") #返回body
返回資料分為head和body,這裡要著重說明,在瀏覽器中,返回的head是不顯示在頁面的,可以透過f12去檢視我們返回的head,在python中,我們用requests獲取內容,預設不會返回head部分
body是我們返回的主體,可以是url,也可以檔案,但注意,一定要轉為二進位制
web_client.send(response_head)
web_client.send(response_body)
然後,我們使用send函式返回客戶端head和body,這時,客戶端就可以接收到我們傳送的資料了。
一定要記住,web_client.recv()接收客戶端請求資料,web_client.send()返回給客戶端資料,最後不要忘了編碼和解碼
web_client.close()
返回客戶端資料以後,我們將程式中的連線關閉。
以上是全部程式碼,大家把所有程式碼複製,直接執行就可以了,這裡給大家出個題目,如果設定需要驗證密碼,如果客戶端傳入密碼正確,就返回資料,不正確,就返回密碼錯誤
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2666466/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#如何用最簡單方法呼叫Python?C#Python
- 最簡單的物件建立物件
- 使用Python建立簡單的HTTP伺服器PythonHTTP伺服器
- 最簡單的 Git 伺服器Git伺服器
- 建立最簡單的物件(c 原始碼)物件原始碼
- 如何建立最簡單的 SAP Kyma FunctionFunction
- nodeJs建立簡單的伺服器NodeJS伺服器
- 簡簡單單的總結,意如生活的平淡
- 如何用TypeScript來建立一個簡單的Web應用TypeScriptWeb
- 最簡單的web伺服器實現(一)Web伺服器
- SAP Cloud Platform integration上建立一個最簡單的iFlowCloudPlatform
- 如何用Python建立自己的Dino Run?Python
- python中yield的用法詳解——最簡單,最清晰的解釋Python
- python 實現 TCP 伺服器最簡流程PythonTCP伺服器
- 最簡單的dockerfile使用教程 - 建立一個支援SSL的Nginx映象DockerNginx
- 如何用Python開發一個簡單的Webkit瀏覽器PythonWebKit瀏覽器
- Java專案部署到雲伺服器最簡單的方法Java伺服器
- C#實現一個最簡單的HTTP伺服器C#HTTP伺服器
- 最簡單的css resetCSS
- 修改SQL Server資料庫表的建立時間最簡單最直接有效的方法SQLServer資料庫
- 使用Gradle建立一個最簡單的Spring Boot專案GradleSpring Boot
- Oracle 10g 手工建立一個最簡單的資料庫Oracle 10g資料庫
- Swoole學習(四)Swoole之簡單WEB伺服器的建立Web伺服器
- Swoole學習(五)Swoole之簡單WebSocket伺服器的建立Web伺服器
- python最簡單的爬蟲 , 一看就會Python爬蟲
- Robot Framework-Ride建立桌面快捷方式(最簡單!)FrameworkIDE
- 最簡單的docker教程:在docker裡執行nginx伺服器DockerNginx伺服器
- 如何用python建立詞雲圖片Python
- 最簡單的原型繼承原型繼承
- 使用HANA Web-based Development Workbench建立最簡單的Server Side JavaScriptWebdevServerIDEJavaScript
- Python 臨時啟動簡單的 HTTP 伺服器PythonHTTP伺服器
- 最簡單jboss教程!
- 簡單的Android介面建立Android
- 關於python操作excel,xlwt,xlwd,最簡單的操作介紹PythonExcel
- Flutter apk最簡單的瘦身方式FlutterAPK
- JRebel 破解最簡單的使用
- Webpack最簡單的方式Mock APIWebMockAPI
- 編寫最簡單的核心:HelloWorld