《Python程序设计》第10章 网络编程_第1页
《Python程序设计》第10章 网络编程_第2页
《Python程序设计》第10章 网络编程_第3页
《Python程序设计》第10章 网络编程_第4页
《Python程序设计》第10章 网络编程_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

口令:RAPID708第10章

网络编程学习目标熟悉Python常用的网络模块。掌握UDP协议网络编程。掌握TCP协议网络编程。Python网络编程Python是一种强大的网络编程语言,因为它对各层网络协议进行封装,所以只需要处理好程序上的设计,不需要关心网络通信的具体细节,使用时直接调用相对应的类即可。Python语言非常擅长字节流和各种模式的处理,使用Python语言方便程序设计时各种网络协议格式的处理。由于Python语言的网络处理工具太过丰富,所以本章节主要讲解当前今常用的“socket模块”、“urllib模块”和“urllib2模块”网络设计模块。Socket模块“socket”模块也叫做嵌套字模块,嵌套字是双向通信信道的端点,套接字可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可以是任何一台有连接互联网的机器。嵌套字主要包括两部分:服务器嵌套字和客户端嵌套字。服务器嵌套字创建后,就必须一直开启,等待客户端服务器连接,同时处理多个连接,连接完成后可以进行通信。客户端嵌套字创建后只需要连接服务器,发送数据,然后断开连接。Socket模块搭建网络服务器importsocketserversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建socket嵌套字host=socket.gethostname() #获取主机名

port=9000serversocket.bind((host,port)) #将用户名、端口绑定到嵌套字

serversocket.listen(5) #启动TCP侦查器

whileTrue:clientsocket,addr=serversocket.accept() #接收TCP客户端连接,等待直到连接到达(阻塞)print("Gotaconnectionfrom%s"%str(addr))#输出连接的客户端地址clientsocket.send(msg.encode('ascii')) #发送TCP消息clientsocket.close() #关闭服务器

Socket模块搭建网络客户端importsockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建socket嵌套字host=socket.gethostname() #获取主机名

port=9000s.connect((host,port)) #启动TCP服务器连接msg=s.recv(1024) #接收TCP消息s.close() #关闭客户端print(msg.decode('ascii')) #打印通信消息Urllib和Urllib2模块“urllib”模块urllib2”模块的功能类似,通过这两个模块可以实现在网络上访问文件,几乎可以和“把“URL”所指向的数据信息用做程序的输入。仅需简单下载,“urllib”模块就可以实现,但是实现较为复杂的HTTP验证或要为协议编写拓展程序就需要使用功能更强大的“urllib2”模块。需要注意,Python3.X以后就没有“urllib2”模块,使用“fromurllibimportrequest”语句代替“urllib2”模块。>>>fromurllibimportrequest>>>request.urlopen(r'/')<http.client.HTTPResponseobjectat0x0000000003588A90>如果将“urllib”模块和正则表达式结合起来就可以下载Web网页信息,提取出所需数据。UDP协议编程UDP协议(用户数据报协议)适用于对效率要求相对较高而对准确性要求相对较低的场合。搭建UDP网络服务器importsocket#使用IPV4协议,使用UDP协议传输数据s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#绑定端口和端口号,空字符串表示本机任何可用IP地址s.bind(('',9000))whileTrue:data,addr=s.recvfrom(1024)#显示接收到的内容data=data.decode()print('receivedmessage:{0}fromPORT{1[1]}on{1[0]}'.format(data,addr))#当接收到字符串“ok”时,结束socket通信ifdata.lower()=='ok':breaks.close()UDP协议编程搭建UDP网络客户端importsocketimportsyss=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#假设服务器IP为:10,端口:9000s.sendto(sys.argv[1].encode(),("10",9000))s.close()TCP协议编程TCP协议(传输控制协议)适用于对效率要求相对较低而准确性要求很高的场合,例如文件传输、电子邮件等,socket模块的TCP协议使用主要包括:建立连接、数据传输、断开连接这三个步骤。搭建TCP网络服务器importsocketfromos.pathimportcommonprefixwords={'howareyou?':'I\'mFine,thankyou.','howoldareyou?':'23','whatisyourname?':'jie',"what'syourname?":'jie','wheredoyouwork?':'Engineer','bye':'Bye'}s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#绑定sockets.bind(('',9000))#开始监听一个客户端连接s.listen(1)conn,addr=s.accept()print('Connectedby',addr)#开始聊天whileTrue:data=conn.recv(1024).decode()ifnotdata:breakprint('Receivedmessage:',data)#尽量猜测对方要表达的真正意思m=0key=''forkinwords.keys():#删除多余的空白字符data=''.join(data.split())#与某个“键”非常接近,就直接返回iflen(commonprefix([k,data]))>len(k)*0.7:key=kbreak#使用选择法,选择一个重合度较高的“键”length=len(set(data.split())&set(k.split()))iflength>m:m=lengthkey=k#选择合适的信息进行回复conn.sendall(words.get(key,'Sorry.').encode())conn.close()s.close()TCP协议编程搭建TCP网络客户端importsocketimportsys#服务端主机IP地址和端口号HOST=''PORT=9000s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)try:#连接服务器s.connect((HOST,PORT))exceptExceptionase:print('Servernotfoundornotopen')sys.exit()whileTrue:c=input('Inputthecontent

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论