先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)

正文

由于socket有太多属性,我们一般使用from import socket *语句,将所有属性导入命名空间。

二、套接字对象内建方法

下面是一些套接字对象常用的方法。

提示:在运行网络应用程序时,最好在不同的电脑上执行服务器和客户端的程序。

三、创建TCP服务器和TCP客户端

根据上面的介绍,现在我们应该能创建一个完整的通信模型了。下面是理论上的伪代码:

1.套接字理论模型

先来创建一个TCP服务器

#创建一个TCP服务器

ss = socket() #创建服务器套接字

ss.bind() #把地址绑定到套接字上

ss.listen() #监听连接

inf_loop: #服务器无线循环

cone,addr = ss.accept() #接收客户端连接

comm_loop: #通信循环

cone.recv()/cs.send() #对话(接受与发送)

cone.close() #关闭客户端套接字

ss.close() #关闭服务器套接字(可选)

所有的套接字都用socket.socket()函数来创建。服务器需要“坐在某个端口上”等待请求。所以它们必须要绑定到一个本地的地址上。

由于TCP是一个面向连接的通信系统,在TCP服务器可以开始工作之前,要先完成一些设置。

TCP服务器必须监听(进来的)连接,设置完成之后,服务器就可以进入无线循环了。

一个简单的(单线程的)服务器会调用accept()函数等待连接的到来,

默认情况下,accept()函数是阻塞式的,即程序在连接到来之前会处于挂起状态。套接字也支持非阻塞模式。

一旦接收到一个连接,accept·()函数就会返回一个单独的客户端套接字用于后续的通信。

使用新的客户端套接字就像把客户的电话转给一个客户服务人员。当一个客户打电话进来的时候,总机接了电话,然后把电话转到合适的人那里来处理客户的需求。

这样就可以空出主机,也就是最初的那个服务器套接字。

当客户端连接关闭后,服务器继续等待下一个客户端的连接。代码的最后一行会把服务器套接字关闭,由于是无限循环也许用不到。

再来创建一个TCP客户端

#创建一个TCP客户端

ss = socket() #创建一个客户端套接字

ss.connect() #尝试连接服务器

comm_loop: #通信循环

cs.send()/cs.recv() #对话(接受或发送)

cs.close() #关闭客户端套接字

在客户端有了套接字之后,马上就可以调用connect()函数去连接服务器。连接建立之后,就可以与服务器开始对话了,对话结束后,客户端就可以关闭套接字,结束连接

2.建立一个单一的连接

服务器端

‘’’

遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025

寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!

‘’’

from socket import *

cs = socket(AF_INET,SOCK_STREAM)

cs.bind((‘127.0.0.1’,8888))

cs.listen(5)

print(“Wait for…”)

anne,addr = cs.accept()

print(anne)

print(addr)

anne.close()

客户端

from socket import *

cl = socket(AF_INET,SOCK_STREAM)

cl.connect((“127.0.0.1”,8888))

cl.send(“Hello,world”.encode(“utf-8”))

cl.close()

先启动服务器:

Wait for… #accept处于等待状态

然后执行客户端,看服务器端的变化:

(‘127.0.0.1’, 54883) #客户端IP地址和端口号

上面的的代码有点单一,有多个客户端同时访问该如何?这就该用到后面的多线程,稍后会讲,这里有另外的折中代码,可以一直访问,虽然一次只能访问一个。

#服务器端

from socket import *

cs = socket(AF_INET,SOCK_STREAM)

cs.bind((“127.0.0.1”,8888))

cs.listen(5)

print(“Have Listen”)

while True:

cone,addr = cs.accept()

while True:

data = cone.recv(1024)

if len(data) == 0:break #如果收到TCP消息,则关闭客户端套接字

print(data.decode(“utf-8”))

cone.send(data.upper())

cone.close()

cs.close()

#客户端

from socket import *

cs = socket(AF_INET,SOCK_STREAM)

cs.connect((“127.0.0.1”,8888))

while True:

ssg = input(“>>>”).strip()

if not ssg:continue #避免空格造成的停顿

cs.send(ssg.encode(“utf-8”)) #发

data = cs.recv(1024)

print(data.decode(“utf-8”)) #收

cs .close()

下面是在linux下的版本测试:

#服务端

#!/usr/bin/env python

#coding:utf-8

from socket import *

import time

HOST = ‘192.168.43.131’

PORT = 8808

BUFSIZ = 1024

ADDR = (HOST,PORT)

tcpser = socket(AF_INET,SOCK_STREAM)

tcpser.bind(ADDR)

tcpser.listen(5)

while True:

print “等待连接…”

anne,addr = tcpser.accept()

print “…连接:”,addr

while True:

data = anne.recv(BUFSIZ)

if not data:

break

anne.send(‘[%s] %s’ % (time.strftime(‘%c’),data))

anne.close()

tcpser.close()

#客户端

#!/usr/bin/env python

from socket import *

HOST = ‘192.168.43.131’

PORT = 8088

BUFSIZ = 1024

ADDR = (HOST,PORT)

tcpcli = socket(AF_INET,SOCK_STREAM)

tcpcli.connect(ADDR)

while True:

data = input(“>>>”)

if not data:

continue

tcpcli.send(data.encode(“utf-8”))

data = tcpcli.recv(BUFSIZ)

if not data:

break

print(data.decode(“utf-8”))

tcpcli.close()

四、创建UDP服务器和UDP客户端

由于UDP服务器不是面向连接的,所以不用像TCP服务器那样做那么多设置工作。

创建一个UDP服务器

#创建UDP服务器

ss = socket() #创建一个服务器套接字

ss.bind() #绑定服务器套接字 文末有福利领取哦~

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、Python必备开发工具

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)

五、Python练习题

检查学习结果。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长! 佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python) [外链图片转存中…(img-ndMwpdJG-1713362580903)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: