VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • python-网络编程(3)

客户端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/use/bin/env python
 
from socket import *
 
HOST = 'localhost'
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST, PORT)
 
udpCliSock = socket(AF_INET, SOCK_DGRAM)
 
while True:
    data = raw_input('> ')
    if not data:
        break
    udpCliSock.sendto(data, ADDR)
    data, addr = udpCliSock.recvfrom(BUFSIZE)
    if not data:
        break
    print(data.decode('utf-8'))
udpCliSock.close()

  

回到顶部

 2.5.socket模块属性

除了属性的socket.socket()函数外,socket()模块还提供下面常见属性:

                                                   socket 模块属性

属 性 名 称

描 述

数据属性

AF_UNIX、AF_INET、AF_INET6①、AF_NETLINK②、AF_TIPC③

Python 中支持的套接字地址家族

SO_STREAM、SO_DGRAM

套接字类型(TCP=流,UDP=数据报)

has_ipv6④

指示是否支持 IPv6 的布尔标记

异常

error

套接字相关错误

herror①

主机和地址相关错误

gaierror①

地址相关错误

timeout

超时时间

函数

socket()

以给定的地址家族、套接字类型和协议类型(可选)创建一个套接字对象

socketpair()⑤

以给定的地址家族、套接字类型和协议类型(可选)创建一对套接字对象

create_connection()

常规函数,它接收一个地址(主机名,端口号)对,返回套接字对象

fromfd()

以一个打开的文件描述符创建一个套接字对象

ssl()

通过套接字启动一个安全套接字层连接;不执行证书验证

getaddrinfo()①

获取一个五元组序列形式的地址信息

getnameinfo()

给定一个套接字地址,返回(主机名,端口号)二元组

getfqdn()⑥

返回完整的域名

gethostname()

返回当前主机名

gethostbyname()

将一个主机名映射到它的 IP 地址

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

gethostbyname_ex()

gethostbyname()的扩展版本,它返回主机名、别名主机集合和 IP 地址列表

gethostbyaddr()

将一个 IP 地址映射到 DNS 信息;返回与 gethostbyname_ex()相同的 3 元组

getprotobyname()

将一个协议名(如‘tcp’)映射到一个数字

getservbyname()/getservbyport()

将一个服务名映射到一个端口号,或者反过来;对于任何一个函数来说,协议名都是可选的

ntohl()/ntohs()

将来自网络的整数转换为主机字节顺序

htonl()/htons()

将来自主机的整数转换为网络字节顺序

inet_aton()/inet_ntoa()

将 IP 地址八进制字符串转换成 32 位的包格式,或者反过来(仅用于 IPv4 地址)

inet_pton()/inet_ntop()

将IP 地址字符串转换成打包的二进制格式,或者反过来(同时适用于 IPv4 和IPv6 地址)

getdefaulttimeout()/setdefaulttimeout()

以秒(浮点数)为单位返回默认套接字超时时间;以秒(浮点数)为单位设置默认套接字超时时间

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

回到顶部

2.6.socketServer模块

虽说用Python编写简单的网络程序很方便,但复杂一点的网络程序还是用现成的框架比较 好。这样就可以专心事务逻辑,而不是套接字的各种细节。SocketServer模块简化了编写网络服务程序的任务。同时SocketServer模块也 是Python标准库中很多服务器框架的基础。

socketserver在python2中为SocketServer,在python3种取消了首字母大写,改名为socketserver。

socketserver中包含了两种类,一种为服务类(server class),一种为请求处理类(request handle class)。前者提供了许多方法:像绑定,监听,运行…… (也就是建立连接的过程) 后者则专注于如何处理用户所发送的数据(也就是事务逻辑)。

**一般情况下,所有的服务,都是先建立连接,也就是建立一个服务类的实例,然后开始处理用户请求,也就是建立一个请求处理类的实例。

 SocketServer 模块类

描 述

BaseServer

包含核心服务器功能和mix-in 类的钩子;仅用于推导,这样不会创建这个类的实例;可以用 TCPServer 或 UDPServer 创建类的实例

TCPServer/UDPServer

基础的网络同步 TCP/UDP 服务器

UnixStreamServer/UnixDatagramServer

基于文件的基础同步 TCP/UDP 服务器

ForkingMixIn/ThreadingMixIn

核心派出或线程功能;只用作 mix-in 类与一个服务器类配合实现一些异步性;不能直接实例化这个类

ForkingTCPServer/ForkingUDPServer

ForkingMixIn 和 TCPServer/UDPServer 的组合

ThreadingTCPServer/ThreadingUDPServer

ThreadingMixIn 和 TCPServer/UDPServer 的组合

BaseRequestHandler

包含处理服务请求的核心功能;仅仅用于推导,这样无法创建这个类的实例; 可以使用StreamRequestHandler 或 DatagramRequestHandler 创建类的实例

StreamRequestHandler/DatagramRequestHandler

实现 TCP/UDP 服务器的服务处理器


相关教程
          
关于我们--广告服务--免责声明--本站帮助-友情链接--版权声明--联系我们       黑ICP备07002182号