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.记录操作 权限控制 说明:根据不同的登录用户分配不同的可管理 ...
随机推荐
- C++中GB2312字符串和UTF-8之间的转换
在编程过程中需要对字符串进行不同的转换,特别是Gb2312和Utf-8直接的转换.在几个开源的魔兽私服中,很多都是老外开发的,而暴雪为了能 够兼容世界上的各个字符集也使用了UTF-8.在中国使用VS( ...
- lightoj1138
二分 #include<map> #include<set> #include<cmath> #include<queue> #include<s ...
- uva 11825 巧妙地子集枚举方法
https://vjudge.net/problem/UVA-11825 题目大意,有n台服务器,有n种服务,每台服务器都运行着所有的服务,一台服务器可以被攻击一次其中的一种服务,当你选择攻击某台服务 ...
- MVC 框架中的缓存
在程序中加入缓存的目的很多是为了提高程序的性能,提高数据的查找效率,在MVC框架中也引入了非常多的缓存,比如Controller的匹配查找,Controller,ControllerDescripto ...
- Qt 组合键的实现
(转自:http://blog.csdn.net/zerokkqq/article/details/6686912) CTRL+Enter发送信息的实现 在现在的即时聊天程序中,一般都设置有快捷键来实 ...
- window.location.href无法跳转
onclick事件存在事件冒泡 所以要阻止它冒泡 解决:在onclick事件里添加return false阻止冒泡:onclick="window.location.href='XXXXX. ...
- 如何在100万文字的文章中 200ms内 快速提取 替换 上万个关键字
关键点: 关键字 组合 成一棵 hash 树 ( 有属性就直接移动指针到下一个字对象, 没有属性就创建子对象, 再移动指针; 第二次循环在子对象看有没这个属性 ) 探测针 标记结束 ...
- 解决webpack vue 项目打包生成的文件,资源文件均404问题
最近在使用webpack + vue做个人娱乐项目时,发现npm run build后,css js img静态资源文件均找不到路径,报404错误...网上查找了一堆解决办法,总结如下 一.首先修改c ...
- 导出/打印项目数据报表需要设置IE浏览器
导出/打印项目数据报表需要设置IE浏览器如下: 1.将本地服务器站点设置为可信站点, 2.通过点击网页上的工具→Internet选项→安全→自定义级别→把关于activeX控件和插件的选项都设置成启用 ...
- Android代码混淆及项目发布方法记录
Android代码混淆及项目发布步骤记录 本来整理了一份Android项目混淆与发布的文档,突然想到何不写篇博客,分享一下呢,如是便有了本文. Android代码混淆及项目发布步骤记录 一.清理 ...