Python网络编程Python内置封装了很多常见的网络协议的库,因此Python成为了一个强大的网络编程工具,这里是对Python的网络方面编程的一个简单描述。1.常用的网络设计模块在标准库中有很多网络设计相关的模块,除了那些明确处理网络事务的模块外,还有很多模块也是是和网络相关的,下面是几个常用的网络设计模块:1・1socket模块模块是网络编程中的基础组件osocket主要的作用就是作为两个程序之间的通信信道,不同进程(不同主机)可以通过socket相互发送信息,以达到网络通信的目的。socket包括两个部分:服务端和客户端。服务端监听端口号,等待客户端发送的消息;而客户端在需要发送信息是,连接服务端,将信息发送出去即可。下面是一个简单的同步网络编程的简单示例:#这是SocketServer部分:#这是SocketClient部分:如果你还可以通提供函数,来直接保存远程文件副本:运行时,请将对应的端口(这里是8o88)添加到防火墙的InBound和OutBound的规则中。1.2urllib和urllib2模块和是Python标准库中最强的的网络工作库。通过这两个库所提供的上层接口,使我们可以像读取本地文件一样读取网络上的文件。而且并不是的升级版本(应该是一种补充),二者是不可相互替代的。通过使用的函数可以很容易的打开远程的文件,如下:也可以通过在通过在路径的前面添加:来访问本地文件:1.3其他与网络相关的模块除了socket、urllib和urllib2这些模块以外标准库还有很多和网络相关的模块,下面的列表是其中的一部分:模块描述的增强版本异步处理程序基本的支持对象操作,主要用于服务器操作客户端支持消息支持包括客户端模块客户端博客客户端模块客户端模块读取几种邮件的格式通过文件访问配置访问邮箱客户端模块客户端模块支持解析服务器的文件一个简单服务服务器模块客户端模块客户端模块支持解析的客户端支持2.SocketServerSocketServer模块是标准库中很多其他服务器框架的基础,这些服务器框架包括:BaseHTTPServer、SimpleHTTPServer、CGIHTTPServer、SimpleXMLRPCServer和DocXMLRPCServer,这些服务框架都是在基础框架上增加了特定的功能。SocketServer包含了4个基本的类:•TCPServer,针对TCP的Socket•UDPServer,针对UDP数据报的Socket•UnixStreamServer•UnixDatagramServer下面是一个基于SocketServer的简单SocketServer端示例:3.多连接一般情况下Socket中的Client端常常不止一个,想要使SocketServer端能同时处理多个Client的连接一般由三种主要的方法:•分叉(forking)(windows不支持)•线程(threading)•异步I/O(asynchronousI/O)3.1使用分叉分叉(fork)是一个UNIX术语;当分叉一个进程(一个运行的程序)时,基本上时复制了它,并且分叉后的两个进程都从当前执行的点继续运行,并且每个进程都有自己的内存副本。一个进程(开始的那个)成为另一个进程的(复制的,也就是子进程)的父进程。在一个使用分叉的服务器中,每个客户端连接都利用分叉创建一个子进程。父进程继续监听连接,同时子进程处理客户端。当客户端的请求结束时,子进程退出。分叉的进程是并行执行的,客户端直接不必相互等待。分叉的缺点是比较耗费资源(每个分叉出来的进程都需要自己的内存)。下面是一个使用分叉创建Socket服务端的示例:使用了分叉,系统不支持3.2使用线程线程是轻量级的进程或子进程,所有的线程都存在于相同的进程(一个运行的程序)中,且共享内存。虽然使用多线程相对于分叉占用的资源较少,但是由于共享内存,所有必需要确保它们的变量不会冲突,或者是同一时间修改同一内容,这样会造成混乱。这些问题可以归结为同步问题。下面是使用多线程的一个简单示例:使用多线程3・3带有select和poll的异步I/O在Python中的异步I/O的基础就是模块的函数。标准库中的和模块对它们进行了进一步的包装,可以从更高层次来处理异步I/O。函数和函数一样,也属于模块,这两个函数的功能基本一样,相对而言的伸缩性更好,但其职能在UNIX系统使用使用。函数需要3个序列作为它的必选参数(输入、输出、异常情况),第四个参数是可选的,表示以秒为单位的超时时间。下面是一个使用的简单示例:版本:方法比使用...