python 網路通訊基礎

2021-10-11 20:56:59 字數 2232 閱讀 7660

所謂網路程式設計就是:讓在不同的電腦上的軟體能夠進行資料傳遞,即程序之間的通訊。

python提供了兩個基本的socket模組。乙個是socket,它提供了標準的bsd socket api;另乙個是socketserver,它提供了伺服器中心類,可以簡化網路伺服器的開發。

1. 理解socket: socket是作業系統i/o系統的延伸部分,它擴充套件了作業系統的基本i/o到網路通訊,使程序和機器之間的通訊成為可能。建立 socket 需要通過呼叫 socket() 函式,並且還需要另外的呼叫來連線和啟用它們( recv() 和 send() ) 。

2. 建立socket:首先需要建立乙個實際的socket物件,其次需要把它連線到遠端伺服器上。建立socket物件的時候需要告訴系統兩件事情:通訊協議和協議家族。

開始了解socket模組前,先熟悉下python的網路程式設計模組主要支援的兩種intent協議:tcp和udp。tcp協議是一種面向連線的可靠協議,用於建立機器之間的雙向通訊流。udp協議是一種較低階別的、以資料報為基礎的協議(無連線傳輸模式)。與tcp不同,udp資訊不可靠。

類方法說明

socket.socket(addressfamily, type[,proto])

建立並返回乙個新的 socket物件

socket.getfqdn(name)

將使用點號分隔的 ip位址字串轉換成乙個完整的網域名稱

socket.gethostbyname(hostname)

將主機名解析為乙個使用點號分隔的 ip位址字串

socket.gethostbyname_ex(name)

它返回乙個包含三個元素的元組,從左到右分別是給定位址的主要的主機名、同一ip位址的可選的主機名的乙個列表、關於同一主機的同一介面的其它ip位址的乙個列表(列表可能都是空的)。

socket.gethostbyaddr(address)

作用與gethostbyname_ex相同,只是你提供給它的引數是乙個ip位址字串

socket.getservbyname(service,protocol)

它要求乙個服務名(如'telnet'或'ftp')和乙個協議(如'tcp'或'udp'),返回服務所使用的埠號

socket.fromfd(fd, family, type)

從現有的檔案描述符建立乙個 socket物件

例項方法

說明sock.bind( (adrs, port) )

將 socket繫結到乙個位址和埠上

sock.accept()

返回乙個客戶機 socket(帶有客戶機端的位址資訊)

sock.listen(backlog)

將 socket設定成監聽模式,能夠監聽 backlog 外來的連線請求

sock.connect( (adrs, port) )

將 socket連線到定義的主機和埠上

sock.recv( buflen[, flags] )

從 socket中接收資料,最多 buflen 個字元

sock.recvfrom( buflen[, flags] )

從 socket中接收資料,最多 buflen 個字元,同時返回資料**的遠端主機和埠號

sock.send( data[, flags] )

通過 socket傳送資料

sock.sendto( data[, flags], addr )

通過 socket傳送資料

sock.close()

關閉 socket

sock.getsockopt( lvl, optname )

獲得指定 socket 選項的值

sock.setsockopt( lvl, optname, val )

設定指定 socket選項的值

建立udp socket:s = socket.socket(socket.af_inet,socket.sock_dgram)建立 tcp socket:s = socket.socket(socket.af_inet,socket.sock_stream)

網路通訊基礎

目錄 一 網路通訊概述 1 網路通訊屬於程序間通訊 2 網路通訊的通次 3 本部分學習方法 二 網路通訊基礎知識1 1 網路通訊的發展歷程 2 三大網路 3 通訊網路的傳輸媒介 三 網路通訊基礎知識2 1 osi open system interconnect,開放式系統互聯 參考模型 2 網絡卡...

網路通訊基礎

1,tcp協議 1 server端 serversocket serversocket new serversocket 10086 socket socket serversocket.accept 等待客戶端的連線 獲取客戶端發來的資料 bufferedreader reader new buf...

python網路通訊

import urllib 網路通訊模組 from urllib import request def url,ispicture false 預設引數 param url param ispicture return none,直接儲存為檔案,不需要返回值 file name url.split ...