python学习(十四) 网络编程
14.1 少数几个网络设计模块
14.1.1 socket模块
套接字包括:服务器套接字和客户机套接字。
在创建一个服务器套架字后,让它等待连接,这样它就在摸个网络地址处(IP地址和一个端口号的组合)监听,直到有客户套接字连接。连接完成后就可以交互了。
服务器套接字比较麻烦,因为必须随时准备处理客户端连接,同时处理多个连接。
一个套接字就是socket模块中的socket类的一个实例。实例化需要3个参数:
第一个是地址族,默认是socket.AF_INET;
第二个参数是流(socket.SOCK_STREAM)或数据报(socket.SOCK_DGRAM);
第三个参数是使用协议
服务器端Socket使用bind方法后,再调用listen方法去监听某个特定的地址。客户端套接字使用connect方法连接到服务器,在connect中使用的地址和服务器端bind的地址相同。
服务器端socket.gethostname,能得到主机名。
一个地址就是一个格式是(host,port)的元组,host是主机名,port是端口号。
listen方法只有一个参数,即服务器未处理的连接长度。
服务器端套接字开始监听后,就可以接受客户端连接。使用accept方法来完成。这个方法会阻塞(等待)直到有客户端连接,然后该方法就会返回一个格式为(client, address)的元组,client是一个客户端套接字,address是一个地址。服务器在处理完与该客户端的连接后,再调用accept方法开始等待下一个连接,这个过程通常在一个无限循环中实现的。
套接字有连个方法:send和recv,用于传输数据。可以使用字符串参数调用send发送数据,用一个所需的(最大的)字节数做参数调recv来接收数据。
server端
import socket
s = socket.socket()
host = socket.gethostname()
port = 1234
s.bind((host, port))
s.listen(5) while True:
c, addr = s.accept()
print('got connection from' % addr)
c.send('thanke you')
c.close
客户端: import socket
s = socket.socket()
host = socket.gethostname()
port = 1234 s.connect((host, port))
print s.recv(1024)
14.1.2 urllib和urllib2模块
功能最强大的网络模块就是urllib和urllib2,通过他们访问网络上的文件,就像访问本地电脑上的文件一样。
两个模块差不多,但是urllib2更好一些。如果只使用简单的下载,urllib足够了;如果要用到HTTP验证或cookie,或者要为自己的协议写扩展程序的话,那么URLlib2是更好的选择。
1)打开远程文件:
from urllib import urlopen
webpage = urlopen('http://www.python.org')
urlopen返回的文件类型支持close, read, realine和readlines
2)获取远程文件
urlopen返回的是能从中读取数据的类文件对象。如果希望urllib为你下载文件并在本地文件中存储一个文件的副本,那么可以使用urlretrieve.
返回元组(filename, headers).
14.1.3 其他模块
14.2 SocketServer和它的朋友们
14.3 多个连接
14.3.1 使用SocketServer进行分叉和线程处理
14.3.2 带有select和poll的异步I/O
14.4 Twisted
14.4.1 下载并安装Twisted
14.4.2 编写Twisted服务器
14.5 小结
python学习(十四) 网络编程的更多相关文章
- python学习之路网络编程篇(第四篇)
python学习之路网络编程篇(第四篇) 内容待补充
- python学习笔记11 ----网络编程
网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...
- python学习之路网络编程篇(第二篇)
新课程知识的引入:python作用域 #python中无块级别作用域 if 1 == 1 : name = 'alex' print(name) for i in range(10): name = ...
- python学习笔记10 ----网络编程
网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...
- Python学习之==>Socket网络编程
一.计算机网络 多台独立的计算机通过网络通信设备连接起来的网络.实现资源共享和数据传递.在同一台电脑上可以将D盘上的一个文件传到C盘,但如果想从一台电脑传一个文件到另外一台电脑上就要通过计算机网络 二 ...
- 五十四 网络编程 TCP编程
Socket是网络编程的一个抽象概念.通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 客户端 大多数连接都是可靠 ...
- python学习之路网络编程篇(第四篇)- 续
Memcache简介 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速 ...
- python学习之路网络编程篇(第一篇)socket初识
什么是socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为socket.socket通常也称为“套接字”,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的 ...
- Python学习十四:filter()
Python 中内置了filter()函数用于过滤序列. 使用方法: filter()接收一个函数和一个序列. filter()把传入的函数依次作用于每一个元素,然后依据返回值是True还是False ...
- python学习之路网络编程篇(第五篇)-续篇
Python堡垒机实现之基础知识 一般的堡垒机必须要具备以下5个基本功能: 1.权限控制 2.执行命令 3.上传下载文件 4.远程登录 5.记录操作 权限控制 说明:根据不同的登录用户分配不同的可管理 ...
随机推荐
- spring3: Aspectj后置返回通知
Aspectj后置返回通知 接口: package chapter1.server; public interface IHelloService2 { public int sayAfterRetu ...
- Annotation: 代码的修饰符
Table of Contents 简介: 是什么, 用途, 为什么有用 使用: 一个简单例子,如@Override.系统提供的annotation,做成列表 定义新的annotation. 涉及到的 ...
- Myeclipse10 安装Aptana插件
安装步骤: 1.下载aptana3.2 Eclipse Plugin插件. 下载地址:http://update1.aptana.org/studio/3.2/024747/index.html 2. ...
- React 实现 Table 的思考
琼玖 1 年前 (写的零零散散, 包括github不怎么样) Table 是最常用展示数据的方式之一,可是一个产品中往往很多非常类似的 Table, 但是我们碰到的情况往往是 Table A 要排序, ...
- mysql int(3)与int(11)的区别
总结,int(M) zerofill,加上zerofill后M才表现出有点点效果,比如 int(3) zerofill,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果i ...
- Java并发编程总结
基础概念 1.什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)?原子操作(atomic operation)意为"不可被中断的一个或一 ...
- Javascript+CSS实现影像卷帘效果
用过Arcgis的筒子们对于Arcmap里面的一个卷帘效果肯定记忆很深刻,想把它搬到自己的WebGIS系统中去,抱着同样的想法,我也对这种比较炫的卷帘效果做了一下研究,吼吼,出来了,给大家汇报一下成果 ...
- Android WebView remote debugging
/***************************************************************************** * Android WebView rem ...
- logistic 回归Matlab代码
function a alpha = 0.0001; [m,n] = size(q1x); max_iters = 500; X = [ones(size(q1x,1),1), q1x]; % app ...
- python Beautiful Soup的使用
上一节我们介绍了正则表达式,它的内容其实还是蛮多的,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,而且有的小伙伴们也对写正则表 达式的写法用得不熟练,没关系,我们还有一个更强大的工具,叫B ...