python网络编程证书_Python网络编程学习

现今有关python网络编程的书籍很多,但是很多都是运用相关的package,之后直接从顶层来进行讲授。但是这样的学习方法比较适合技工,对于python爱好者来说,这种空中楼阁式的学习方法并没有什么益处。因为不同的package由编程风格迥然不同的人贡献,最终导致的结果就是记住了一大堆乱七八糟的函数名,然而不知道为什么要这样用相应的函数,过了两天也就全忘记了。从今天起,本文选择一种从python内置的较底层的package开始学习的方式,逐步学习python的网络编程。越向底层进行学习,越能发现相应的问题。

今天首先开始对python3的socket包的源代码开始学习。

socket包实现了一系列网络编程的工具函数。在未来一段时间中,我将选取一些socket.py中重要的代码进行学习,之后用较底层的代码实现一些简单的网络编程功能。

我们从socket.py中定义的第一个函数学起,如下:

try: import _sslexcept ImportError: # no SSL support passelse: def

ssl(sock, keyfile=None, certfile=None): # we do an internal import here because

the ssl # module imports the socket module import ssl as _realssl

warnings.warn("socket.ssl() is deprecated. Use ssl.wrap_socket() instead.",

DeprecationWarning, stacklevel=2) return _realssl.sslwrap_simple(sock, keyfile,

certfile) # we need to import the same constants we used to... from _ssl import

SSLError as sslerror from _ssl import \ RAND_add, \ RAND_egd, \ RAND_status, \

SSL_ERROR_ZERO_RETURN, \ SSL_ERROR_WANT_READ, \ SSL_ERROR_WANT_WRITE, \

SSL_ERROR_WANT_X509_LOOKUP, \ SSL_ERROR_SYSCALL, \ SSL_ERROR_SSL, \

SSL_ERROR_WANT_CONNECT, \ SSL_ERROR_EOF, \ SSL_ERROR_INVALID_ERROR_CODE

try A except B else C

的语法是比较pythonic的,如果执行A代码没有捕获到异常,那么执行else之后的C段代码,在上一段代码中则是定义了ssl函数。我们重点关注下ssl()函数。

def ssl(sock, keyfile=None, certfile=None): # we do an internal import here

because the ssl # module imports the socket module import ssl as _realssl

warnings.warn("socket.ssl() is deprecated. Use ssl.wrap_socket() instead.",

DeprecationWarning, stacklevel=2) return _realssl.sslwrap_simple(sock, keyfile,

certfile)

ssl全称是secure sockets

layer,中文叫安全套接层。简单来说就是当我们远程与对方服务器建立通信时,需要获得对方的认证,具体的认证方式不细说了,等到未来应用的时候再谈。总之就是我们通过自身的keyfile(秘钥)来获得对方服务器certfile(访问证书)的过程。

这段代码值得学习的地方有一个internal import,作者说:

# we do an internal import here because the ssl # module imports the socket

module

因为ssl模块import了socket.py,如果放在外面显然就会出现在socket模块代码中import

socket代码的奇怪情况,而将import socket 放在ssl函数的局部作用域中就无此问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值