首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python入门系列——网络

目录:

一、TCP编程

二、UDP编程

Python 提供了两个级别访问的网络服务:

低级别的网络服务支持基本的 ,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。

高级别的网络服务模块 , 它提供了服务器中心类,可以简化网络服务器的开发。其实是在Socket基础上的一个多线程升级,作为入门教程,我们不做涉及。

我们在此将socket编程方式分为面向连接的方式(即TCP)和不面向连接的方式(即UDP)进行分别讨论。一、TCP编程

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,对应到编程中,它的特点就是需要先建立连接,再进行数据传输。

在此盗一张很棒的图解方便大家理解:

然后,临时为了演示需要,将一个日历查看功能布在了服务端,可通过接受客户端提交的请求,返回对应的请求内容。当然,你完全可以根据自己的需要布置更加有意义的小程序替换这里,如:nmap等。

需要注意的是,socket在python3中的数据传输均使用bytes的方式,所以我们需要及时的进行编码解码操作。

其中socket的基本语法为

其中有一处类型转换是使用的,即bytes类型解码转字符串再转数字的形式,暂时没有找到更有效且稳定的替换方案,在线求助各位大佬~

关于常用套接字函数在上面的例子中已通过注释的形式进行了说明,在此进行统一整理:

二、UDP编程

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。对应到编程中,就是不需要连接的建立,直接进行数据传输。

我们直接改写上面的例子进行对比讲解:

简单说下区别,UDP编程,服务端不需要创建连接等待,直接接收;也不需要listen设置最大连接数。客户端同样不需要先创建连接,也就是不需要进行connect()操作,直接发送数据即可。数据发送方式改为sendto(),需要制定地址,毕竟UDP是非面向连接的。

TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据。相对TCP,UDP则是面向无连接的协议。使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包。但是,能不能到达就不知道了。虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190124G0VQ8R00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券