当前位置: 首页 > Python > 正文

python网络编程应用(一)

   在之前的一篇博客《python网络编程基础中介绍了socket.socket()函数及其应用,其实socket模块中还有很多属性可供网络应用程序使用。这里将详细讲解一下socket模块中一些常用到的函数/属性。

 

  1. socket模块属性

  下面列出了一些常用的socket模块属性。(引用自《python核心编程》)

更详细的函数说明,请看python官方文档中的socket模块:https://docs.python.org/2/library/socket.html

 

   2. 实际应用中的实例分析

  2.1 打印设备名和IPV4地址

  函数原型: socket.gethostname() 和 socket.gethostbyname(hostname) 。也可以使用socket.getfqdn() 返回完整的域名字。

  2.2 打印本地网络接口的IPV4地址 

  2.3 IPV4地址格式转换

  函数原型:socket.inet_aton(ip_string 和socket.inet_ntoa(packed_ip) 。  如果需要ipv6支持,就需要使用inet_pton()/inet_ntop()函数。

2.4 通过指定端口和协议找服务名

  函数原型: socket.getservbyname(servicename[, protocolname])  和  socket.getservbyport(port[, protocolname]) 。协议名可以省略,默认是找所有的协议,如需指定,只能是‘tcp’或者‘udp’。                   

2.5 主机字节序与网络字节序之间的转换 

2.6 设置套接字超时

2.7 设置缓冲区大小

  setsockopt()方法接收三个参数:level、optname和value。其中,optname是选项名,value是该选项名的值。value所用的符号常量(SO_*等)可以在socket模块中查看。

2.8 设置套接字(非)阻塞模式

  默认情况下,TCP套接字是处于阻塞模式下的。这种模式会使操作效率低下,如果两个程序最后都在等待对方发送或者接收数据,就有可能导致死锁。调用setblocking()方法可以改变套接字的阻塞标志。默认值为1,表示会阻塞。传入值为0时则关闭阻塞。如果套接字为非阻塞,并且没有为处理操作做好准备,就会产生一个socket.error。解决的方法是设置一个超时值。

2.9 地址重用

  当连接有意或无意关闭后,如果想再在这个端口上运行套接字服务端就会抛出一个”Address alreadly in use”异常。解决的方法是启用套接字重用选项SO_REUSEADDR。

  2.10 处理套接字错误

  在socket套接字使用过程中,很可能会出现很多错误,可以使用try-except语句处理异常。

 



这篇博文由 s0nnet 于2015年05月02日发表在 Python 分类下, 欢迎你在下面发表评论
如无特别说明,独木の白帆发表的文章均为原创,欢迎大家转载,转载请注明: python网络编程应用(一) | 独木の白帆
关键字:

python网络编程应用(一):等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter