不管你是待业还是失业,在这个被互联网围绕的时代里,选择python网络编程,就多了一项技能,还怕找不到工作?,还怕不好找工作?小编就来告诉你这个专业的优势到底体现在哪里:Python 中的网络编程,Python基础教程,第十五讲,网络编程(一)Socket详解,关于Python的3个谎言,别再盲目学Python了(含视频及书籍资源)??。
1.Python 中的网络编程
你怎么还在用Python写的单机版程序?因为我现在才刚学不久 现在开发的基本上都是互联网程序了,你要不要跟我一起学一下用Python网络编程?哇!真的吗?大佬求带! 低调低调,说到网络编程,那么我们先要了解互联网。我了解,互联网就是把许多网络连接起来。 恩,不错,那你知道什么是TCP,UDP吗?em,以前听过,现在有点忘了,你可以给我说道说道吗? 可以,我们以前的计算机网络,为了能够互相通信,很多厂商都有自己的一套协议,这就弄得很乱,因为互不兼容,所以通信起来很费劲。后来呢,为了让成千上万的计算机连接起来,定义了两个标准的协议,一个是TCP,一个是 IP,也就是我们现在简称的 TCP/IP 协议。也就是说我们遵循 TCP/IP 协议就可以互联了是吧! 恩,通信的时候,双方要知道对方的标识,才能通信。那。。大佬能告诉我下 TCP 和 IP 的区别吗? 当然可以,那我先告诉你 IP 协议吧,假如我要发信息给你,我们都在互联网上,都有自己的 IP 地址和路由,那么当我发信息给你的时候呢,IP 协议就负责将数据进行传输,这些数据被分割成一小块一小块的,通过 IP 包给发送过去。因为们之间在互联网上是有很多链路的,所以路由就会将一小块一小块的数据包逐个进行转发,直到发送到你的IP地址。但是它不能够保证数据都能到达,也保证不了能够按顺序的到达。啊~那如果丢失怎么办?有什么办法吗? 有!那就是 TCP 协议,TCP协议建立在IP协议之上的。TCP协议会建立可靠连接,保证数据包按顺序到达。TCP协议会通过握手建立连接,确保对方按顺序收到,如果包丢掉了,就自动的重新再发。哦,明白了,那刚刚你说的 UDP 又是? 我们已经知道了 TCP 是面向连接的,比较可靠,而UDP协议呢,它是面向无连接的,也就是我只要知道你的IP地址和端口就可以直接给你发送数据了,不需要先跟你握手,不过数据能不能到达就不知道了。哦,明白,就是TCP可靠,UDP传输效率高。 对头,所以呢,如果不要求数据可靠到达的话就可以用UDP。那么接下来我们就用 Python 来进行 TCP 和 UDP 的编程吧。太好了!! 不过在此之前跟你讲一下 Socket 的东西,因为等下我们要用到,Socket 在互联网编程中表示建立了一个互联网连接,Socket知道了对方的IP地址、端口号、协议,就可以建立连接了。恩,感谢大佬,明白了。 ok,那我们开始吧!1 Python 中的 TCP 编程1.1 TCP客户端的编写我们现在访问一些网页什么的,这些网页是在服务器端的,而我们访问的设备属于客户端。比如我们现在通过浏览器访问这个地址: Python 来建立可靠的 TCP 连接,获取到这些图片呢?# 导入socket这个库 import socket # 创建一个socket对象 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 开始建立TCP连接 s.connect(("www.meizitu.com",80)) # 连接后,发送请求 s.send(b'GET / HTTP/1.1\r\nHost: www.meizitu.com\r\: close\r\n\r\n') # 接收数据 buffer = [] while True: d = s.recv(1024) if d: buffer.append(d) else: break # 把字节连接起来 data = b''.join(buffer) # 关闭连接 s.close() # 把数据读取出来 with open('meizi.html','wb') as f: f.write(data) 运行之后,我么就有了咱们的妹纸文件:打开有惊喜。 这就是建立TCP连接,然后客户端向服务端发送请求的过程了。嗯嗯嗯,我懂了,我这就去试试,小姐姐等我。 瞧把你急的,服务端怎么写不了解一下?要啊,见笑见笑,我把纸巾收回去先。1.2 TCP 服务端的编写服务端一般都是一直在运行着的,等待着客户端来连接,然后给出请求响应,服务端需要提供 ip 地址和端口给客户端去连接。首先我们来写一个简单服务端的:import socket # 创建socket对象 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 绑定监听端口 s.bind(('127.0.0.1',8888)) # 监听 s.listen(1) while True: # 接收连接 sock,addr = s.accept() print("有人连进来了") sock.send(b'hei man, are you ok?') sock.close当有人连接进来我们就给他发一句:hei man,are you ok ?接着我们再来写个客户端的连接过去:# 导入socket这个库 import socket # 创建一个socket对象 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 开始建立TCP连接 s.connect(("127.0.0.1",8888)) # 接收数据 buffer = [] d = s.recv(1024) buffer.append(d) # 把字节连接起来 data = b''.join(buffer) print(data) # 关闭连接 s.close()然后先运行我们的服务端,再运行客户端: 这就是TCP了,这里我就模拟自己一个人来连接,如果多个连接就要开启多个线程,懂了么?懂了懂了,谢谢大佬,给~ 肥皂就不必了,我是直男。不好意思,我刚刚拿错了,对了,大佬,那我怎么使用Python来编写UDP协议的呢? 你已经知道了 TCP ,那么 UDP 也差不多的,不过UDP更简单一些,它不需要建立可靠的连接,直接请求就可以了,我写个代码给你看看吧。2 Python中的 UDP 编程我们来先写服务端:import socket # 创建socket对象,这里传入的是SOCK_DGRAM,代表UDP s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 绑定监听端口 s.bind(('127.0.0.1',8090)) while True: # 接收连接 data,addr = s.recvfrom(1024) print(addr) s.sendto(b'hei man, are you ok?',addr)可以看到,在这里我们不需要跟对方连接,只要知道地址就直接发送过去就可以了。客户端:import socket # 创建一个socket对象 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.sendto(b'ha',("127.0.0.1",8090)) # 接收数据 print(s.recv(1024).decode('utf-8')) # 关闭连接 s.close()运行如下: 这就是UDP。感谢大佬,我去试一下 恩,去吧,少看点妹纸图。关注我,让你像看小黄文一样轻松学到 Python 的所有!ps:还没获取我精心准备的 Python 电子书和思维导图等干货的可以在我的公众号「学习Python的正确姿势」中发送 python 免费获取哦! 点赞,转发到朋友圈是一种支持
2.Python基础教程,第十五讲,网络编程(一)Socket详解
网络编程的重要性不低于数据库操作,而且两者通常是同时存在,比如用python写一个爬虫程序,最终抓取的数据保存入库,写了一个web项目,用户注册,登录,提交订单等数据最终也要保存到我们的数据库中,可见网络编程的重要性。所以我会拿出三讲的时间,分别介绍python中socket编程,爬虫和web服务器。 和大家一起理解网络编程。学完此次课程,我能做什么?学完此次课程,我们可以使用socket建立一个简易的socket服务器和socket客户端,并且可以进行通信。学习此次课程,需要多久?5-10分钟课程内容什么是socket?socket翻译过来称为套接字,是一个基本的网络组件,过于详细的介绍大家可以百度一下,不在这里说了,只讲几个项目中的重点:socket提供长连接,建立两个点之间的信息通道;需要编写socket服务器端和socket应用端,可以理解为聊天程序的服务器和聊天程序的客户端。为什么要使用socket?想一下如何实现一个web聊天程序?如果没有websocket的相关知识,会不会很low的用ajax实现?每隔5秒请求一次服务器看有没有消息返回。这样做的缺点很明显:死循环,无限请求服务器,对服务器压力增大。实时性差,无法*时间收到消息,需要等待下次循环。看一下Ajax方式的示意图:有了socket这个问题就可以迎刃而解,首先客户端与服务端建立长链接,服务器可以接受信息,也可以主动推送信息给已连接的客户端程序,而客户端可以主动发送给服务器信息,也可以被动的接受服务器的推送信息。看一下Socket方式示意图:很明显socket和http相比是长链接,双向通信,11点58分11秒客户端1给服务器发送了一条信息,服务器接收后立即推送给客户端2,客户端2通过接受方法,处理信息,显示给用户,优点是不是很明显?赶紧学习一下如何使用吧。上面已经说过socket要编写服务端和客户端的程序,那我们先写一下用于监听的服务端:注意点:*步:创建socket链接s = socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)AF_INET:使用ipv4的方式通讯,默认即可。type:SOCK_STREAM 是 TCP方式, SOCK_DGRAM 是 UDP方式链接,关于tcp和udp的协议理解大家记住TCP数据传输可靠,效率低于UDP。相反UDP不确保数据是否传输成功,效率高。第二步:bind()函数,绑定ip地址和端口号,linux下端口号小于1024的为系统保留,使用需要root权限,为了保证程序正常运行,*使用1024以上的端口。第三步:list()函数,设置允许排队等待链接的数量,由于accept为阻塞方法,所以要设置等待链接的数量,后面我们会讲如何解决阻塞。第四步:接收信息,输出信息。看一下客户端的代码:客户端相对来说比较简单,创建链接后,使用connect()链接服务器即可。看一下运行结果:服务端打印出客户端发来的信息Hello,而客户端输出了 服务端返回的信息。使用python实现一个socket服务器就是这么简单,其他功能也是在这个基础上来实现,无非是接受,转发,处理各类消息。小结今天我们学习了,Python中的socket,了解了如何建立一个socket服务器程序,以及客户端如何编写,了解了整体的流程,后期我们会在这个基础上结合wxpython来实现一个聊天软件。接下来学习什么?接下来,我们会学习一下大名鼎鼎的爬虫,通过python如何快速实现一个简易爬虫。关注公众号,回复 Python基础 下载全部代码+PDF版电子书
3.关于Python的3个谎言,别再盲目学Python了(含视频及书籍资源)
本人18年自学Python,现在是一名前端开发。虽然不是大佬,但我还是想先泼点冷水!不要被市面上的各种Python培训广告冲昏了头脑:① 学完Python,并不能立马拿一两万的工资,甚至可能找不到工作!②Python也没有那么简单,不是有手就行!③别想着1个月、2个月就能学会,你至少得腾出半年时间全职学习!如果你还是执意要学Python,那么好,接下来我们看看怎么学。Python作为一门脚本语言,难度上相较于其他语言略微简单点。但对于没有计算机基础的人来说,可能最开始配置Python编译环境都能让他望而却步。这里推荐一个无需安装配置的在线编程平台(新手可以先在线写一段时间的代码,适应下)边学边练,零基础在线编程学习平台 1、Python学习路线图学习一定不是盲目的,只有先明确了要学哪些东西,怎么学,才能更高效地去学Python。这是Python的整个知识体系图谱,对于新手来说,没必要学那么多。先把Python基础和进阶知识吃透,才是入门的关键。后续你是往前端开发深造,还是去新潮时髦的大数据、人工智能,就全凭自己的兴趣。但我相信这时候的你,应该不会像现在这么迷茫。2、关于如何学Python其实网上的Python课程很多,都是比较有体系的。学Python入门和进阶的知识,用网课完全足够。但Python本质上是对一门语言工具的运用,实战比理论更重要。我们在学习的时候一定要多敲、多练、多思考!!!写代码不只是跟着视频课或者照着书本写完就行的,我们要理清每行代码的逻辑。刚开始学,*对每一句代码都加以注释,帮助我们理清逻辑,加深印象。同时,学完一个知识点后应该多去找对应的案例来练习,做到理论与实战的深度结合。推荐一套免费的Python课:Python入门到精通137讲 这套Python课的每一个知识点讲完,都会有对应的实战案例来练习,强烈推荐给新手!3、Python学习资源Python学习网站名称链接说明代码课堂 Py编码规范中文版 Code Examples Module of the Week Py标准库的使用菜鸟教程 cookbook》算法类:《算法图解》《Python算法》《算法导论》计算机网络书籍:《计算机网络:自顶而下》《TCP/IP详解1:协议》《计算机网络基础》*,自学Python最重要的就是心态。我们在学习过程中必然会遇到很多难题,可能自己想破脑袋都无法解决。这都是正常的,千万别急着否定自己,怀疑自己。找一个靠谱点的师兄,没事知乎一下,其实这些难题也就迎刃而解了。
就拿大数据说话,优势一目了然,从事IT行业,打开IT行业的新大门,找到适合自己的培训机构,进行专业和系统的学习。