當需要處理socket庫某些屬性的預設值,例如套接字逾時時間。你可以建立一個套接字對象執行個體,調用settimeout()法設定一個逾時時間,在調用gettimeout()方法擷取預設的逾時時間。這種操作在開發伺服器應用時很有用。
技術點解析:
1、定義socket_timeout()函數,注意函數縮進格式。
2、socket庫中的類函數建立一個套接字對象
使用socket.socket(socket.AF_INET,socket.SOCK_STREAM)首先建立了一個套接字對象socket() -- create a new socket object socket.AF_INET 套接字構造方法的第一個參數是位址族 ,socket.SOCK_STREAM 參數是套接字類型
3、套接字操作函數
gettimeout() 調用此函數擷取套接字逾時時間(參數使用的是秒數,也可以是 None 如果把逾時時間設為None,則禁用了套接字操作的逾時檢測)
settimeout() 調用此函數修改套接字逾時時間
這個方法在處理阻塞式套接字操作時使用
4、測試隻是為了驗證設定的時間而已
5、print列印輸入類型對應多列,是一一互相對應的
代碼如下:
1
2
3
4
5
6
7
<code>import</code> <code>socket</code>
<code>def test_socket_timeout():</code>
<code> </code><code>s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)</code>
<code> </code><code>print(</code><code>"Default socket timeout: %s"</code> <code>%s.gettimeout())</code>
<code> </code><code>s.settimeout(100)</code>
<code> </code><code>print(</code><code>"Current socket timeout: %s"</code> <code>%s.gettimeout())</code>
<code>test_socket_timeout()</code>
運作結果如下:
<a href="https://s2.51cto.com/wyfs02/M01/9E/9F/wKioL1mT-U_zI0x-AAA2jTygDfg850.jpg-wh_500x0-wm_3-wmp_4-s_574507804.jpg" target="_blank"></a>
本文轉自 yuri_cto 51CTO部落格,原文連結:http://blog.51cto.com/laobaiv1/1956800,如需轉載請自行聯系原作者