python之路-網路編程

來源:互聯網
上載者:User

標籤:架構   設計   機器   控制   int   網路編程   pen   設計模式   位置   

一. 楔子

  兩個程式之間想要傳遞一個資料,需要用到網路通訊.

二. 軟體開發的架構:

  第一種: 應用類: qq,,網盤,優酷 這一類是屬於需要安裝的案頭應用.

  第二種: web類: 百度,知乎,部落格園,等使用瀏覽器訪問就可以直接使用的應用.

 這些應用的本質其實就是兩個程式之間的通訊,而這兩個分類又對應了兩個軟體開發的架構.

  1.C/S 架構

C/S即: client與server,中文意思: 用戶端與伺服器端架構,這種架構也是從使用者層面,(也是物理層面劃分的).

  2.B/S 架構

B/S即:browser和server,中文意思:瀏覽器端與伺服器端架構,這種架構是從使用者層面來劃分. 

browser瀏覽器,其實也是一種client用戶端,只是這個用戶端不需要大家去安裝什麼應用程式,只是需要通過http請求伺服器端相關的資源(網頁資源),用戶端browser瀏覽器就能進行增刪改查.

三. 網路基礎.

  1. osi七層模型.

  2.socket概念

  socket是應用程式層與TCP/IP協議族通訊的中間軟體抽象層,他是一組介面.在設計模式中,socket其實就是一個門面模式,它把複雜的TCP/IP協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議.

其實站在你的角度上看,socket就是一個模組.我們通過調用模組中實現的方法
建立兩個進程之間的串連和通訊.也有人將socket說成ip+port,因為ip是用來標識互連網中的一台主機的位置,
而port是用來標識這台機器上的一個應用程式,
所以我們只要確立了ip和port就能找到一個應用程式,並且使用socket模組來與之通訊.

  3. tcp協議和udp協議

TCP 可靠的.連線導向的協議,傳輸效率低全雙工系統通訊(發送緩衝,接收緩衝),面向位元組流.

使用TCP的應用: web瀏覽器;電子郵件;檔案傳輸程式.

UDP 不可靠的,不需連線的服務,傳輸效率高(發送錢延遲小),一對一,一對多,多對多,面向報文,盡最大努力服務,無擁塞控制,使用UDP的應用: 網域名稱系統(DNS); 視頻流,IP語音.

 

 

四.通訊端(socket)初使用.

1. 基於TCP協議的socket

 tcp是基於串連的,必須先啟動伺服器,然後再啟動用戶端去串連伺服器.

 server端

import socketsk = socket.socket()sk.bind((‘127.0.0.1‘,8898))  #把地址綁定到通訊端sk.listen()          #監聽連結conn,addr = sk.accept() #接受用戶端連結ret = conn.recv(1024)  #接收用戶端資訊print(ret)       #列印用戶端資訊conn.send(b‘hi‘)        #向用戶端發送資訊conn.close()       #關閉用戶端通訊端sk.close()        #關閉伺服器通訊端(可選)
View Code

 client端

import socketsk = socket.socket()    # 建立客戶通訊端sk.connect((‘127.0.0.1‘,8000))    # 嘗試串連伺服器sk.send(b‘hello‘)ret = sk.recv(1024) # 對話(發送/接收)print(ret)sk.close() # 關閉客戶通訊端
View Code

 

  問題: 重啟服務端時可能會遇到,

 解決方案:

# 加入一條socket配置,重用ip和連接埠.import socketfrom socket import SOL_SOCKET,SO_REUSEADDRsk = socket.socket()sk.setsockopt(SQL_SOCKET,SO_REUSEADDR,1) # 就是它,在bind前加.sk.bind(‘127.0.0.1‘,8000) #把地址綁定到通訊端sk.listen() #監聽連結conn,addr = sk.accept() #接收用戶端連結ret = conn.recv(1024) #接收用戶端資訊print(ret) # 列印用戶端資訊conn.send(b‘hi‘) # 向用戶端發送資訊conn.close() # 關閉用戶端通訊端sk.close() # 關閉伺服器通訊端(可選)

 

python之路-網路編程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.