python核心程式設計---讀書筆記:第16章 網路程式設計
第16章網路程式設計
套接字:用於程序間通訊,或IPC
種類:基於檔案的和基於網路的
地址家族:AF,AddressFamily
兩個程序都執行在同一臺機器,且套接字是基於檔案的
基於網路的套接字:AF_INET,Internet,最廣泛使用
AF_INET6
套接字地址:主機與埠
面向連線的套接字:提供順序,可靠,非重複資料傳輸,TCP
建立TCP他姐自,指定套接字型別:SOCK_STREAM,是劉套接字
無連線套接字:UDP,不能呢個保證可靠和非重複性,效能更好
套接字型別為SOCK_DGRAM,資料報
16.3.1建立套接字:
socket(socket_family , socket_type ,protocol=0)
socket_family: AF_INET,AF_UNIX
socket_type: SOCK_STREAM , SOCKDGRAM
protocol:預設為0
tcpSock = socket.socket(socket.AF_INET ,socket.SOCK_STREAM)
服務端套接字函式
s.bind():繫結地址(主機,埠號對)到套接字
s.listen():開始TCP監聽
s.accept():被動接受客戶端連線
客戶端套接字函式
s.connect() 連線TCP伺服器
s.connect_ex():返回錯誤嗎
s.recv():接受TCP資料
s.send():傳送TCP資料
s.sendall() 完整發送TCP資料
s.recvfrom()接受UDP資料
s.sendto():傳送UDP資料
s.closs():關閉套接字
服務端需要繫結到本地地址,建立執行緒來處理客戶請求
SocketServer
需要把伺服器的無限迴圈放在try-except語句總,捕獲異常,
呼叫close()關閉伺服器套接字
16.3.6建立一個UDP伺服器
直接等待進來的連線就好
UDP伺服器
ss = socket()
ss.bind()
while True:
cs= ss.recvfrom()
ss.sendto()
ss.close()
UDP客戶端:
cs = socket()
while True:
cs.sendto()
cs.recvfrom()
cs.close()
16.4 *SocketServer模組
重要,含有這方面處理
BaseServer
TCPServer , UDPServer: 基於網路同步的TCp/UDP伺服器
16.5
Twisted框架介紹
Twisted:事件驅動的網路框架
select 模組在底層套接字程式中與socket模組聯合使用,可同時管理多個套接字物件
select模組作用:同時監聽多個套接字的連線
SocketServer:提供建立伺服器的系統
async*:非同步開發支援庫
相關推薦
python核心程式設計---讀書筆記:第16章 網路程式設計
第16章網路程式設計 套接字:用於程序間通訊,或IPC 種類:基於檔案的和基於網路的 地址家族:AF,AddressFamily 兩個程序都執行在同一臺機器,且套接字是基於檔案的 基於網路的套接字:AF_INET,Internet,最廣泛使用 AF_INET6 套接字
linux核心程式設計讀書筆記【第三章程序管理】
第三章程序管理 應專業選修Linux程式設計老師的要求,記錄讀書筆記 3.1程序 1)程序:處於執行期的程式(目標碼存放在某種介質上),包含程式碼段還包含其他資源(開啟的檔案、核心內部資料、存放全域性變數的資料段),是正在執行的程式程式碼的實時結果,Linux通
《Python核心程式設計》第16章 網路程式設計 練習
16-4. 客戶。 修改TCP(tsTclnt.py)和UDP(tsUclnt.py)客戶端,讓伺服器的名字不要在程式碼裡寫死,要允許使用者指定一個主機名和埠,只有在兩個值都沒有輸入的時候,才使用預設值。 # coding=utf-8 __author__ = 'Ibuk
Java 並發編程實踐基礎 讀書筆記: 第三章 使用 JDK 並發包構建程序
mod 獲取鎖 -o key 讀取 拋出異常 編程實踐 arraylist ask 一,JDK並發包實際上就是指java.util.concurrent包裏面的那些類和接口等 主要分為以下幾類: 1,原子量;2,並發集合;3,同步器;4,可重入鎖;5,線程池 二,原子量
《JAVA多線程編程核心技術》 筆記:第六章:單例模式與多線程
會有 isp left sync con 多線程編程 鎖機制 數據 range 一、立即加載/"餓漢模式"和延遲加載/"懶漢模式" 立即加載(又稱餓漢模式):在使用類的時候已經將對象創建完畢,常見實現方法是直接new實例化 延遲加載(又稱懶漢模式):在調用get
機器學習實戰---讀書筆記: 第10章 利用K均值聚類演算法對未標註資料分組---1
#!/usr/bin/env python # encoding: utf-8 import os from matplotlib import pyplot as plt from numpy import * ''' 讀書筆記之--<<機器學習實戰>>--第10章_
Effective Java讀書筆記(第8章-通用程式設計)
第8章 通用程式設計 第45條:講區域性變數的作用域最小化 要使區域性變數的作用域最小化,最有力的方法就是在第一次使用它的地方宣告。 如果在迴圈終止之後不再需要迴圈變數的內容,for迴圈優先於while迴圈。 for迴圈比
《談判力》讀書筆記:第五章 堅持使用客觀標準
第五章 堅持使用客觀標準 不論你多麼理解對方利益,不論你多麼善於調和雙方的利益, 也不論你多麼重視雙方目前的關係, 你總要面對一個殘酷的現實,那就是雙方的利益相互衝突。 即便討論實現“雙贏”的戰略也無法掩蓋這一事實。 你希望房租再便宜些,房東則希望能擡高一些;
讀書筆記:java多執行緒程式設計核心技術
讀書筆記,簡單記錄....(都是從我的有道雲筆記直接複製的,沒有進行發表修改, 讀者見諒!) 第一章 掌握執行緒的啟動 暫停 停止 優先順序 安全性等 1.1程序 與 執行緒 程序 作業系統結構的基礎,是一次程式的執行,是系統進行資源分配和排程的獨立單位,簡單理解
《開濤:網站架構核心技術》讀書筆記系列-第15章【disruptor】
一 序: 本章業務場景:佇列在資料結構中是一種線性表,從一端插入資料,然後從另一端刪除資料。作者舉例的場景有:進行非同步處理、系統解耦、資料同步、流量削峰、緩衝、限流等。 前面的比較淺,總結起來,核心知識點有兩塊: 1. disruptor+redis佇列 2. 基於c
流程python學習筆記:第五章(1)
第五章:一等函式 在python中一切都可以視作為物件,包括函式。我們來看個例子: def function_try(): '''it is funciton try doc''' print 'function_try' if __name__=="_
不測的祕密:精準測試之路----讀書筆記(第三章)
三、精準化測試第一式:差異化 關注實現,明確測試物件,指哪打哪 尋找測試物件差異,尋找最小精準測試物件 測試物件:指測試的源程式、目標程式、資料和相關文件 精準測試物件:迭代之間的差異部分(需求差異、技術實現上的差異)、差異部分影響的其他功能
不測的祕密:精準測試之路----讀書筆記(第四章)
四、精準化測試第二式:技術治理 1、技術耦合(由強到弱) 內容耦合 * 一個模組直接訪問另一個模組的內部資料 * 一個模組不通過正常入口轉到另一模組內部 * 兩個模組有一部分程式程式碼重疊(只可能出現在組合語言中) * &nbs
不測的祕密:精準測試之路----讀書筆記(第五章)
五、精準化測試第三式:度量和分析閉環 1、如何衡量測試精準度:初步想法用程式碼覆蓋率來體現 程式碼覆蓋率:用來衡量程式碼被覆蓋程度的一種度量方式 語句覆蓋:度量被測程式碼中每個可執行語句是否執行到了 判定覆蓋:度量程式中每一個判定的分支(分支真、假)是否都被執行到了
《c語言從入門到精通》看書筆記——第16章 網路套接字程式設計(上)——網路
(1)TCP協議:傳輸協議(TCP)是一種提供克勞資料傳送的通用協議,他是TCP/IP體系結構中傳輸層上的協議。在傳送資料時,應用層的資料傳輸到傳輸層,傢伙是哪個TCP首部,資料就構成了報文。報文就是網路層IP的資料,如果再加上IP首部,就構成了IP資料報。TCP協議的C語言資料描述如下:
深入理解linux核心讀書筆記(第三章)
1. 程序是程式執行時的一個例項。 2. 從核心的角度看,程序是系統進行資源分配的實體。 3. linux 通過輕量級程序來支援多執行緒應用,每一個輕量級程序對應一個執行緒。 執行緒之間共享地址空間,開啟的檔案等資源,核心對每一個輕量級程序進行單獨排程。 4. 一個
《Java並發編程實戰》讀書筆記1_第三章:對象的共享
相對 執行順序 調整 ava 得到 並發編程 自己 引用 處理 可見性 內存可見性,我們不僅希望防止某個線程正在使用對象狀態而另一個線程在同時修改改狀態,而且希望確保當一個線程修改了對象狀態後,其他線程能夠看到發生的狀態變化。 順序性 在沒有同步的情況下,編譯器、處理器以及
《Java核心技術(卷1)》筆記:第7章 異常、斷言和日誌
## 1. 異常 1. (P 280)異常處理需要考慮的問題: * 使用者輸入錯誤 * 裝置錯誤 * 物理限制 * 程式碼錯誤 2. (P 280)傳統的處理錯誤的方法是:返回一個特殊的**錯誤碼**,常見的是返回-1或者`null`引用 3. (P 280)在Java中,方法
Java編程思想讀書筆記_第三章
str style java sys out java編程 new col println 本章提到的關於==的部分,一個完整的實驗如下: 1 class Test { 2 public static void main(String[] args)
Java編程思想讀書筆記_第6章(訪問權限)
ack string 屬於 cte pri 包訪問權限 print code int 四種訪問權限: public private 包訪問權限 protected 如果沒有明確指定package,則屬於默認包 1 package access.dessert; 2