对python网络编程的学习

时间:2022-07-12 11:17:16 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
python

开首语:

Python与我看过的《unix高级环境编程》等书籍原理上差不多一样,都需要socket来支撑,同时遵循TCPUDP传输协议,在理论上和实际之中都需要创建客户端和服务端(C/S模式)利用socket数据流来进行通信。 网络编程应有的两点前提:

一、Socket:服务器与客户端之间进行通信媒介,信息都是以数据的形势存在,双方进行通信实际上都是在进行数据的交换,从而socket担当重要的角色,网络中“公交汽车”。这个网络公交汽车具备以下两点功能:

1) Send:从字面上来理解:“发送”,在实际的编程用途也是发送,对网络之中数据流进行发

送,在创建socket模块对象以后调用此方法,可以发送程序想要发送的数据。

2) Recvreceive简写):从字面来理解是“接受”,在实际编程之中用途也是接受,此功能用

来接受对方发送的数据,在创建socket模块对象以后掉用此方法,可以接受通信双方发送的数据。

有了以上两种方法后,解决了网络编程之中基本功能:接受和发送。但是在实际网络编程之中有以上两种方法永远不能解决实际问题,还得有许多其它的功能来支撑。

Socket的种类:

AF_UNIX:也叫

AF_LOCAL,这是基于文件的;

AF_NETLINK:这是Linux系统支持的一种套接字; AF_INET:这个套接字是基于网络的。

二、端口号:端口号就像打电话一样,有区号和电话号。双方想要建立通信,就必须有此作为连接的前提,使用端口号一般是被限制的,在linux或者unix之中只有系统管理员才能使用1024以下端口号,这些端口号用于标准服务,比如80端口用于web服务。如果用Ctrl+C停止一个程序以后,要等上一段时间才能使用这个端口号,但是有时可能会返回一个错误信息“该端口正在使用”(在实际之中,我利用ctrl+c停止了进程之后,再运行同样的程序,会出错,我利kill -9强制杀死了该进程,再次正常运行了该程序,体会了端口号的在实际之中存在)。

三、创建简单网络程序:

简单服务器建立: Import socket

S = () Host = () Port = 1024 ((host,port)) (5) while True: c,addr = ()

print 连接来自于:,addr (谢谢你给连接!) ()

小型客户机: Import socket S = () Host = ()


Port = 1024 ((host,port)) print (1024) () 程序解释:

1 创建和执行流程:

服务器端:1.建立socket对象,调用socket模块; 2.进行本地地址绑定;

3.进行监听客户端发来的连接消息; 4.循环接受连接请求; 5.发送消息或者接受消息; 6.完成任务后,关闭套接字。 客户端:1.建立socket对象,调用socket对象; 2.连接请求; 3.接受消息;

4.完成任务后,关闭套接字。

2)客户端中用到了“while True”,利用真循环调节来无限接受客户连接请求,在理论上可以做到,但是在实际之中收到物理条件的限制,到达一定条件后会关闭客户端。 3)名词解释:bind(绑定)、listen(监听)、accept(接受)、connect(连接),recv(接受)。

四、网络中中文件操作:

在使用的各种网络编程工作库,功能最为强大为urlliburllib2,简单的调用就能将远程机子上的文件像本地自己的文件一样来使用,几乎可以把任何url指向的东西作为程序输入。

这两个模块的功能差不多,但是只是简单的文件下载,urllib就足够,如果是要进http验证或者用cookie来为自己的程序写扩展程序,urllib2是一个不错的选择。以下是使用方式:

打开远程文件:

From urllib import urlopen Webpage = urlopen(‘’)

与使用本地文件不同的是,在使用远程文件的时候使用的是“只读”模式。Urlopen之中必须包含一个连接到网页文件路径,此时才能用urlopen来打开文件。

Urlopen返回的类文件对象支持closereadreaddlinereadlines方法,当然也支持迭代。

:如果想要实验rullib但现在没有在线,可以用以file开头的URL访问本地文件,比如:c:\向凯\(记得要对“\”进行转义)。

下载远程文件:

如果想在本地保存远程文件副本,此时urlopen提供了一个方法:urlretrieveUrlretrieve返回一个元组(filenameheaders)而不是类文件对象。如:

Urlretrieve(‘,C:\\

这个语句获取python的主页并把它储存在文件C:\中。如果没有指定文件名,文件就会在放在临时的位置,用open函数可以打开它,但如果完成了对它的操作,就可以删除它。要清理临时文件,可以调用urlcleanup函数,但不要提供参数,该函数会负责清理工作。


感想与收获:

简单的网络编程我现在能够建立它,并且能够正常运行。但是这只是简单的网络编程,刚刚进入网络编程世界,还有许多原理还值得去学习,许多编程框架值得去学习,像我即将学到的:socketsever框架(一个功能更为强大的python网络编程模块)、分叉技术、实现多连接等等。自己心中还想到用多线程去实现网络编程,创建连接池来解决多个连接问题。


本文来源:https://www.wddqw.com/doc/7cd1ff40f66527d3240c844769eae009581ba222.html