python網路程式設計 二 使用TCP

2022-01-17 08:10:21 字數 2497 閱讀 6543

1.建立socket

對於乙個客戶端程式來說,建立乙個socket需要兩個步驟。首先,您需要建立乙個實際的socket物件。其次,您需要把它連線到遠端伺服器上。

協議家族則定義資料如何被傳輸,通訊型別基本上都是:af_inet(和ipv4對應)。協議家族表示tcp通訊的sock_stream和表示udp通訊的sock_dgram。

對於tcp通訊,建立乙個socket連線,一般類似這樣的**:

2.尋找埠號大多數才做系統都會附帶乙份埠號列表,python的socket庫包含乙個getservbyname()的函式,它可以自動地查詢。

為了查詢這個列表,您需要兩個引數:協議名和埠號名。埠名是乙個字串,例如:http可以被轉換為乙個埠號。

"執行結果:

3.從socket獲取資訊

一旦建立了乙個socket連線,您可以從他那裡獲取一些有用的資訊:

執行結果:

執行這個程式可以看到兩條新的資訊。第一條顯示您本身的ip位址和埠號,第二條顯示遠端機器的 ip位址和埠號。對於客戶端來說,埠號是由作業系統分配的,所以,您會發現每次執行程式時,埠號都不一樣。

4.利用socket通訊

python提供了兩種方法:socket物件和檔案類物件

socket物件提供了作業系統的send(),sendto(),recv()和recvfrom()呼叫的介面。檔案類物件提供了read(),write()和readline()這些更典型的python介面

5.socket異常

1.與一般i/o和通訊問題有關的socket.error

2.與查詢位址資訊有關的socket.gaierror

3.與其他位址錯誤有關的socket.herror

4.與在乙個socket上呼叫settimeout()後,處理超時有關的socket.timeout(需要python2.3或更高版本)

TC網路控制工具的基本使用

模擬網路延時 驗證是否成功ping一下就可以知道了 1 將 eth0 網絡卡的傳輸設定為延遲 100 毫秒傳送。2 將 eth0 網絡卡的傳輸設定為延遲 100ms 10ms 90 110 ms 之間的任意值 傳送 這個命令也會在一定程度上打亂包的順序 3 將 eth0 網絡卡的傳輸設定為 100m...

python高階程式設計 網路程式設計(二)

udp 使用者資料報協議,是乙個無連線的簡單的面向資料報的運輸層協議。udp不提供可靠性,它只是把應用程式傳給ip層的資料報傳送出去,但是並 不能保證它們能到達目的地。udp是一種面向無連線的協議,每個資料報都是乙個獨立的資訊,包括完整 的源位址或目的位址,它在網路上以任何可能的路徑傳往目的地,因此...

網路程式設計(二)

網路程式設計基礎 二 struct in addr 這個結構體中儲存的是網路二進位制的ip位址 include struct hostent gethostbyname const char name name 網域名稱 返回值 struct hostent define h addr h addr...