学习Python网络编程基础

Foundations of Python Network Programming,the 2nd Edition学习笔记

Chapter 1 C/S网络

这一章首先介绍了virtualenv的使用:于是这里首先简要介绍一下virtualenv的用处

virtualenv 用来创建隔离的Python环境。处理python环境的多版本和模块依赖,以及相应的权限是一个很常见的问题。比如,你有个应用使用的是LibFoo V1.0,但另一个应用却要用到LibFoo V2.0。 如何处理呢?如果把所有模块都安装到 /usr/lib/python2.7/site-packages (或是你本机python默认的模块安装目录),那你极有可能无意中升级一些不该升级的模块。更普遍的是,就算你成功安装了某个应用,那么接下来又会怎样?只要它开始运行了,那么只要其所依赖的模块发生任何改动,亦或升级,都可能打断该应用。这还没完,要是你无法在 site-packages 目录下安装模块呢?比如共享主机。

上述这几种场合都适用 virtualenv 。它会创建一个拥有独立安装目录的python环境,该隔离环境不会与其他virtualenv环境共享模块(可选择是否访问全局库目录)。

可从https://pypi.python.org/pypi/virtualenv上下载,对于windows OS,直接在命令行运行python setup.py install就可以实现安装

下面讲一下如何使用:直接在命令行执行python virtualenv.py ENV,

该操作会创建 ENV/lib/pythonX.X/site-packages 目录 和 ENV/bin/python , 前者用来存放要安装的模块,后者就是隔离环境的Python解释器。 在virtualenv环境下使用此解释器(包括以#!/path/to/ENV/bin/python 开头的脚本)时,使用的都是隔离环境下的模块。

该操作还在隔离环境下安装了 Setuptools 或 distribute 。要用Distribute取代setuptools的话,只要运行:

$ python virtualenv.py --distribute ENV

设置环境变量 VIRTUALENV_USE_DISTRIBUTE 也能达到同样目的。新的virtualenv还包含了 pip 包管理器,可以直接用 ENV/bin/pip 安装第三方模块。详细内容可参见https://virtualenv-chinese-docs.readthedocs.org/en/latest/#wrongway 

1.TCP基础

TCP/IP是一些协议(protocols)的合集。Internet是在一些共享的线路上发送数据的。为实现共享,TCP是通过把要发送的数据流分解成很多小信息包在Internet上传输的(也许还伴有其他程序的信息包),这些信息包到达接收者的地方会再次重新合成在一起。这样就可以节省发送时间。

IP--代表地址(机器的唯一性)   TCP——使用端口号(程序的唯一性)

每个TCP连接的端点都是由一个IP地址和一个端口号来唯一标识的

Client/Server模式:

2.Python网络编程:大致有两种情况:1.利用python中已有的一些协议模块来写2.自己写协议

以程序来说明:

Client code:

 1 # Simple Gopher Client - Chapter 1 - gopherclient.py
 2 
 3 import socket, sys
 4 
 5 port = 70
 6 host = sys.argv[1]
 7 filename = sys.argv[2]
 8 
 9 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
10 s.connect((host, port))
11 
12 s.sendall(filename + "\r\n")
13 
14 while 1:
15     buf = s.recv(2048)
16     if not len(buf):
17         break
18     sys.stdout.write(buf)
19     

Server code:

 

posted @ 2013-08-28 20:44  CoolRandy  阅读(314)  评论(0编辑  收藏  举报