Python网络编程

3.网络编程

计算机之间的网络通信需要在不同计算机程序之间发送和接受数据,通信的程序可能位于同一个计算机也可能在不同的计算机上。和人打电话或寄信一样,计算机程序之间的通信需要解决2个问题:通信双方的编地问题和如何协商收发数据。

如同打电话是在2个电话号码进行的或寄信需要双方的地址一样,计算机程序之间的通信需要知道这2个程序的地址,相互通信的互联网程序每个程序都有一个确定的地址,即由程序所在的计算机的ip地址和程序占用的通讯端口port构成。

除了程序的地址外,通信双方还需要协商如何发送和接受数据,如同网上购物的商家和买家如何从开始接触、下单、付款、发货、收货一样,计算机程序之间的通信也必须遵守一套双方协商好的通信规则,如开始握手建立通信连接、相互发送和接受数据,终止连接等有一套标准,这种指导双方通信的规则、标准称为通信协议。针对互联网的网络通信,人们发明许多具有层次依赖关系的满足不同通信需求的多个不同的通信协议,即著名的TCP/IP通信协议。如图所示:

Python提供了两种编写网络通信程序的API(库)。

低层的套接字库,是底层操作系统中的C语言套接字(库)的Python接口,可以用来编写“面向连接”和“无连接”协议的客户端和服务器。高层的针对特定应用程序级别网络协议(如FTP,HTTP等)的库,这些库依赖低层的套接字库。13.1套接字编程概述

套接字(socket)是双向通信通道的端点。应用程序通过"套接字"向网络发出请求或者应答网络请求,使不同计算机上的应用程序进程可以相互通讯。套接字可以在一个进程内、同一机器上的不同进程、或不同网络的进程之间进行通信。可以针对多种不同的通道类型(如Unix域套接字、TCP、UDP)实现套接字。套接字库提供了用于处理公共传输的特定类及相关的接口。

Python的套接字模块是底层的使用BSD套接字接口进行网络通信的C语言API的Python接口,包含了套接字类socket处理实际的数据传输以及网络相关的任务如将服务器名转化为地址、格式化数据以便网络传输。

详细内容:请参看即将出版的书“Python程序设计基础与实践教程”.如部分内容的截图

总结

本章介绍了套接字编程,包括:

介绍了套接字编程的基本概念和Python的套接字模块socket如何编写面向连接的TCP/IP服务器和客户程序轮流处理请求的服务器服务器用多进程和多线程处理并发请求如何编写无连接的UDP服务器和客户程序如何用更高层的模块socketserver中的socket服务器类如TCPServer和UDPServer编写套接字服务器

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();