python之網路程式設計

2022-09-11 13:15:23 字數 2548 閱讀 1093

埠port由來

ip位址主要是確定網路上某個具體的主機具體資料通訊主要是通過工作在計算機中的軟體執行。當主機a向主機b傳送資訊時,具體會由主機b上哪個程式接收呢,由此計算機出現了埠port的概念,埠port主要用於區別不同軟體的通訊渠道,用於正確的將資料通過制定的埠渠道傳輸給對應的軟體。

因此ip位址精確到具體的一台電腦,而埠精確到具體的程式。

socket程式設計

socket是應用層與tcp/ip協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,socket其實就是乙個門面模式,它把複雜的tcp/ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議。所以,我們無需深入理解tcp/udp協議,socket已經為我們封裝好了,我們只需要遵循socket的規定去程式設計,寫出的程式自然就是遵循tcp/udp標準的。

套接字套接字的概念很簡單,每台主機有乙個唯一的主機位址標識,同時主機內還有標識自己程序的序號id,稱作埠,將這兩個識別符號結合就構成了乙個套接字(socket),這個套接字能唯一標識網路中的乙個程序。(網路上的兩個程式通過乙個雙向的通訊連線實現資料的交換,這個連線的一端稱為乙個socket, 又稱為「套接字」。)

tcp(transmission control protocol)可靠的、面向連線的協議(eg:打**)、傳輸效率低全雙工通訊(傳送快取&接收快取)、面向位元組流。使用tcp的應用:web瀏覽器;電子郵件、檔案傳輸程式。

4.4.1.1 建立tcp伺服器連線的6個步驟

1、建立socket物件。呼叫socket建構函式:

基本語法:socket.socket(socket_family, socket_type, protocal=0)

引數:socket_type:socket 連線型別:1)面向連線的(sock_stream) 2)面向無連線的(sock_dgrame) protocal:

傳輸協議,一般不用設定,使用預設值進行自動匹配就好

我們這裡選擇基於網路型別的資料通訊,socket連線型別為面向的連線

socket(af_inet,sock_stream)

基本語法:socket.bind(address)

引數:address必須為乙個雙元素的元組,(host,port),主機名或ip位址+埠號。如果埠號正在被使用或者保留,或主機名或ip位址錯誤,則引發socket.error異常。

如果ip位址為 0.0.0.0 代表本機的任意乙個ip           埠  0--1024 為系統保留

ip位址為localhost代表本地主機,指這台計算機,相對應的ip位址為127.0.0.1

3、繫結後,必須準備好套接字,以便接受連線請求:

基本語法:socket.listen(backlog)

引數:backlog

backlog指定最多的連線數,至少為1,接到連線請求後,這些請求必須排隊,如果佇列已滿,則拒絕請求。

4、伺服器套接字通過socket的accept方法等待客服請求乙個連線:

connection,address=socket.accept()

呼叫accept方法時,socket會進入『waiting』(阻塞)狀態。客服請求連線時,方法建立連線並返回伺服器。accept方法返回乙個含有兩個元素的元組,形如(connection,address).第乙個元素是新的socket物件,伺服器通過它與客服端通訊,第二個元素是客戶端internet的位址。

5、處理階段,伺服器通過send和recv方法通訊

伺服器呼叫send,並採用字串的形式向客服傳送資訊。send方法返回已傳送的字元個數。伺服器使用recv方法從客服接受資訊。呼叫recv時,必須指定乙個整數來控制本次呼叫所接受最大的資料量。recv方法在接受資料時會blocket狀態,最後返回乙個字串,用它來表示接受的資料。如果傳送的量超過recv所允許,資料會被截斷。多餘的資料將緩衝於接收端。

6、呼叫接受,伺服器呼叫socket的close方法以關閉連線

4.4.1.2 建立tcp客服端

1、建立socket物件。呼叫socket建構函式:

2、使用socket的connect方法連線伺服器socket.connect((host,port))

3、客戶和伺服器通過send和recv方法通訊:

4、結束後,客戶通過呼叫socket的close方法來關閉理連線

python之網路程式設計

用python寫了乙個簡單的socket程式設計demo,記錄一下。主要實現在客戶端傳送linux指令,在伺服器端執行後返回執行結果,比較簡單,所以就不多加贅述了。服務端 usr bin python coding utf 8 import socket,os host port 8888 buf ...

Python筆記之網路程式設計

1,學習這部分,應先了解一下osi 7層模型,tcp ip四層,socket套接字等網路相關知識點。python網路庫,urllib,urllib2,後者功能更強大一些。import urllib2 import urllib html response.read print html 還有smtp...

Python之socket網路程式設計

實現主機間或一台電腦上的程序間進行通訊 例項如下 服務端 匯入socket sys模組 import socket import sys 建立socket物件 serversocket socket.socket socket.af inet,socket.sock stream 獲取本地主機名 h...