當前位置:
首頁 > 最新 > 一步一步實現HTTP伺服器-C/S伺服器框架結構

一步一步實現HTTP伺服器-C/S伺服器框架結構

概述

繼上一篇XmlRPC簡介及使用對PRC做了個簡單介紹,其實RPC就是網路編程的一個實際應用,不過上次從上層講解,可能還不能很好的理解一個簡單Client/Server(客戶端/伺服器,後面簡稱C/S)網路通信框架,本次就使用Pyhthon來說明一個完整的Socket伺服器通信的框架,同時本文先從TCP進行講解(具體TCP和UDP系列後面進行細說)。

本文主要從以下幾個方面進行闡述:

伺服器和客戶端通信簡單介紹

Socket函數簡介

服務端代碼實現

客戶端代碼實現

通過以上4個步驟,對網路編程有個簡單理解,方便後文層層深入作鋪墊


Socket(套接字)是計算機網路數據結構,在任何類型的通信開始之前,網路應用程序都必須創建套接字。就類似於網線兩端的水晶頭,如果沒得這個東西無法建立連接。Socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層複雜的操作抽象為幾個簡單的介面供應用層調用已實現進程在網路中通信。 Socket起源於UNIX,在Unix一切皆文件哲學的思想下,Socket是一種"打開—讀/寫—關閉"模式的實現,伺服器和客戶端各自維護一個"文件"(如果客戶端和伺服器在同一台機器上,進行進程間通信,可以是一個文件句柄;如果在網路上這個就相對複雜些),在建立連接打開後,可以向自己文件寫入內容供對方讀取或者讀取對方內容,通訊結束時關閉文件。


通用套接字方法

socket(family=AFINET, type=SOCKSTREAM, proto=0)#創建套接字

recv(buffersize, flags=None)#接收TCP消息

send(data, flags=None)#發送TCP消息

服務端套接字方法

bind(address)#將地址(主機名、埠號)綁定到套接字上

listen(backlog=None)#監聽埠

accept()#阻塞等待客戶端的連接(被動接收客戶端連接)

客戶端套接字方法

connect(address)#連接伺服器指定埠(主動發起TCP連接)



既然是C/S模型,那麼首先得先說說Server端,一般伺服器的框架如下:

創建伺服器socket套接字

套接字與地址綁定(此處地址為ip:port

監聽埠

伺服器進入循環階段(一般都是死循環,因為要提供持續服務)

開始接受客戶端的連接

此時就開始進行消息的接收和發送

關閉客戶端socket套接字

關閉伺服器socket套接字(次數一般都不會執行,因為是死循環嘛,除非捕獲異常)

基於上面幾個步驟,此處使用Python代碼進行實現時間戳伺服器

通過再命令行運行python timestampeServer.py程序即可


對於客戶端稍微簡單點:

創建客戶端socket套接字

嘗試連接伺服器

發送/接收數據

關閉客戶端套接字

通過再命令行運行python Client.py程序即可

歡迎關注交流共同進步

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 奔跑阿甘 的精彩文章:

Windows窗體數據抓取詳解
XmlRPC簡介及使用

TAG:奔跑阿甘 |