有时,你需要处理socket库某些属性的默认值,例如套接字超时时间。 1.7.1 实战演练 你可以创建一个套接字对象实例,调用gettimeout()方法获取默认的超时时间,调用settimeout()方法设定一个超时时间。这种操作在开发服务器应用时很有用。 在test_socket_timeout()函数中,首先创建一个套接字对象,然后使用读取或者设定实例方法处理超时时间。 代码清单1-6展示了如何定义test_socket_timeout()函数,如下所示: #!/usr/bin/env python # Python Network Programming Cookbook -- Chapter - 1 # This program is optimized for Python 2.7. It may run on any # other Python version with/without modifications. import socket def test_socket_timeout(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print "Default socket timeout: %s" %s.gettimeout() s.settimeout(100) print "Current socket timeout: %s" %s.gettimeout() if __name__ == '__main__': test_socket_timeout() 运行上述代码后,你会看到它是如何修改默认超时时间的,如下所示: $ python 1_6_socket_timeout.py Default socket timeout: None Current socket timeout: 100.0 1.7.2 原理分析 在这段代码片段中,首先创建了一个套接字对象。套接字构造方法的第一个参数是地址族,第二个参数是套接字类型。然后,调用gettimeout()方法获取套接字超时时间,再调用settimeout()方法修改超时时间。传给settimeout()方法的参数可以是秒数(非负浮点数)也可以是None。这个方法在处理阻塞式套接字操作时使用。如果把超时时间设为None,则禁用了套接字操作的超时检测。
Python网络编程攻略——1.7 设定并获取默认的套接字超时时间
书名: Python网络编程攻略
作者: 萨卡尔
出版社: 人民邮电出版社
译者: 安道
出版年: 2014-12-1
页数: 170
定价: 45.00元
装帧: 平装
丛书: 图灵程序设计丛书
ISBN: 9787115372697