4、使用socket选项
socket对象的getpeername()和getsockname()方法都返回包含一个IP地址和端口的二元组(这个二元组的形式就像你传递给connect和bind的)。getpeername返回所连接的远程socket的地址和端口,getsockname返回关于本地socket的相同信息。
在默认情况下,socket是阻塞式的,意思就是socket的方法的调用在任务完成之前是不会返回的。例如,如果存储向外发送的数据的缓存已满,你又企图发送更多的数据,那么你对send的调用将被阻塞直到它能够将更多的数据放入缓存。你可以通过调用setblocking(flag)方法(其中flag取值是0,setblocking(0))来改变这个默认行为,以使socket为非阻塞式。当socket为非阻塞式的时候,如果所做的动作将导致阻塞,将会引起error异常。下面一段代码将试图不断地接受新的连接并使用函数processRequest来处理。如果一个新连接无效,它将间隔半秒再试。另一方法是在你的监听socket上调用select或poll来检测一个新的连接的到达。
别的socket的选项可以使用setsockopt(level,name,value)和getsockopt(level,name[,buflen])方法来设置和获取。socket代表了一个协议栈的不同层,level参数指定了选项应用于哪一层。level的取值以SOL_开头(SOL_SOCKET,SOL_TCP等等)。name表明你涉及的是哪个选项。对于value,如果该选项要求数值的值,value只能传入数字值。你也可以传递入一个缓存(一个字符串),但你必须使用正确的格式。对getsockopt,不指定buflen参数意味你要求一个数字值,并返回这个值。如果你提供了buflen,getsockopt返回代表一个缓存的字符串,它的最大长度是buflen的字节数。下面的例子设置了一个socket的用于发送的缓存尺寸为64KB:
>>> s=socket(AF_INET,SOCK_STREAM)
>>> s.setsockopt(SOL_SOCKET,SO_SNDBUF,65535)
要得到一个包在被路由丢弃前所能有的生命周期(TTL)和跳数,你可以使用如下代码:
>>> s.getsockopt(SOL_IP,IP_TTL)
32
5、数值转换
由于不同平台的字节顺序不一样,所以当在网络中传输数据时我们使用标准的网络字节顺序。nthol(x)和ntohs(x)函数要求一个网络字节顺序的数值并把它转换为当前主机字节顺序的相同数值,而htonl(x)和htons(x)则相反:
>>> import.socket
>>> socket.htons(20000) #转换为一个16位的值
8270
>>> socket.htonl(20000) #转换为一个32位的值
541982720
>>> socket.ntohl(541982720)
20000
分享到:
相关推荐
python网络编程,适用于网络编程方向的同学,书中采用的是python3的代码。
Python是一种功能十分强大的面向对象编程语言,可以用于编写独立程序、快速脚本和复杂应用的原型。作为一种开源软件,Python可以自由获取,而且非常易学易用。本书是Python语言的经典入门读本,由两名顶尖的Python...
PYTHON网络编程基础.pdfPYTHON网络编程基础.pdfPYTHON网络编程基础.pdfPYTHON网络编程基础.pdfPYTHON网络编程基础.pdfPYTHON网络编程基础.pdfPYTHON网络编程基础.pdf
本书全面的介绍了python语言进行网络编程的基础,主要内容包括网络基础知识,网络操作,高级网络操作等
Python网络编程.pdfPython网络编程.pdfPython网络编程.pdfPython网络编程.pdfPython网络编程.pdfPython网络编程.pdfPython网络编程.pdfPython网络编程.pdf
python网络编程第3版 英文 python3
PYTHON网络编程基础.pdf PYTHON网络编程基础.pdf PYTHON网络编程基础.pdf
Python网络编程基础最新版,使用Python3,是入门的极佳图书。高清完整版。
Python网络编程视频讲解3 ICMP UDP.avi Python网络编程视频讲解10.phon实战avi Python网络编程视频讲解9数据库mp4 Python网络编程视频讲解8Na Python网络编程视频讲解5 SNMP Syslog NTP.avi Python网络编程视频拼解2...
python网络编程
python 网络编程和网络编程基础
Python网络编程基础
python网络编程第三版pdf 共364页 中文版 图灵教育
python网络编程小例子
python基于Linux平台网络编程的PPT与源代码
Python网络编程视频讲解1.ARP.avi Python网络编程视频讲解2.ARP IP ICMP.avi Python网络编程视频讲解3.ICMP UDP.avi Python网络编程视频讲解4 DNS DHCP TFTP.avi Python网络编程视频讲解5.SNMP Syslog NTP.avi ...
非常全面的Python网络编程教程,详细讲解了用Python进行网络编程的方方面面
Python 网络编程 python网络编程 socket