如何用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
- 如何用TypeScript來建立一個簡單的Web應用TypeScriptWeb
- 簡簡單單的總結,意如生活的平淡
- 如何用Python建立自己的Dino Run?Python
- SAP Cloud Platform integration上建立一個最簡單的iFlowCloudPlatform
- python中yield的用法詳解——最簡單,最清晰的解釋Python
- python 實現 TCP 伺服器最簡流程PythonTCP伺服器
- 最簡單的dockerfile使用教程 - 建立一個支援SSL的Nginx映象DockerNginx
- Robot Framework-Ride建立桌面快捷方式(最簡單!)FrameworkIDE
- python最簡單的爬蟲 , 一看就會Python爬蟲
- 修改SQL Server資料庫表的建立時間最簡單最直接有效的方法SQLServer資料庫
- Java專案部署到雲伺服器最簡單的方法Java伺服器
- 使用HANA Web-based Development Workbench建立最簡單的Server Side JavaScriptWebdevServerIDEJavaScript
- 如何用python建立詞雲圖片Python
- Python 臨時啟動簡單的 HTTP 伺服器PythonHTTP伺服器
- 最簡單的docker教程:在docker裡執行nginx伺服器DockerNginx伺服器
- Flexbox 佈局的最簡單表單Flex
- JRebel 破解最簡單的使用
- 建立簡單的表測試
- 關於python操作excel,xlwt,xlwd,最簡單的操作介紹PythonExcel
- 最簡單的隨機過程——馬爾科夫鏈的Python分析隨機馬爾科夫Python
- 最簡單的SpringBoot整合MyBatis教程Spring BootMyBatis
- Flutter apk最簡單的瘦身方式FlutterAPK
- 一個最簡單的web componentsWeb
- 建立一個簡單的小程式
- Android最簡單的側劃選單,DrawerLayout的使用Android
- 【configure】如何用automake、autoconf指令生成configure並建立自己的linux tar.gz安裝包【初級篇:簡單建立-測試】Linux
- 如何用SAP Cloud for Customer的手機App建立銷售訂單CloudAPP
- [譯] 使用 Pandas 在 Python 中建立一個簡單的推薦系統Python
- 來了老弟,最簡單的Promise原理Promise
- 實現最簡單的模板替換
- ViewPager最簡單的無限輪播Viewpager
- 使用rails實現最簡單的CRUDAI