• python进阶九_网络编程


    Python网络编程一

    一.一些基本概念

    Python网络编程这一节中会涉及到非常多网络相关的术语。对于一些最主要的概念,如TCP/IP,Socket等等不再赘述,不明确的能够自己去查一查,对于一些常见可是可能不是非常熟悉的术语这里做了一个简要的介绍,兴许遇到不会因此止步。

    SNTP:简单网络时间协议(Simple Network Time  Protocol)简单来说就是用来同步因特网中的计算机时钟,须要注意的是这里的SNTP是用户数据报(UDP)协议。

    MIME:Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被訪问的时候,浏览器会自己主动使用指定应用程序来打开。多用于指定一些client自己定义的文件名称,以及一些媒体文件打开方式。

    POP3:邮件协议的第三个版本号,它是规定个人计算机怎样连接到互联网上的邮件server进行收发邮件的协议。

    它是因特网电子邮件的第一个离线协议标准,POP3协议同意用户从server上把邮件存储到本地主机(即自己的计算机)上,同一时候依据client的操作删除或保存在邮件server上的邮件,而POP3server则是遵循POP3协议的接收邮件server。用来接收电子邮件的。

    POP3协议是TCP/IP协议族中的一员。由RFC 1939 定义。

    本协议主要用于支持使用client远程管理在server上的电子邮件

    SSL:安全套接层(Secure Sockets Layer ),及其继任者传输层安全(Transport Layer SecurityTLS)是为网络通信提供安全及数据完整性的一种安全协议。TLSSSL在传输层对网络连接进行加密。

    IRC:IRCInternet Relay Chat 的英文缩写,中文一般称为互联网中继聊天。它是由芬兰人Jarkko Oikarinen1988年首创的一种网络聊天协议。经过十年的发展。眼下世界上有超过60个国家提供了IRC的服务。IRC的工作原理非常easy,您仅仅要在自己的PC上执行client软件,然后通过因特网以IRC协议连接到一台IRCserver上就可以。它的特点是速度非常之快,聊天时差点儿没有延迟的现象,而且仅仅占用非常小的带宽资源。全部用户能够在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。

    每一个IRC的使用者都有一个Nickname(昵称)。

    LDAP:LDAP是轻量文件夹訪问协议,英文全称是Lightweight Directory Access Protocol。一般都简称为LDAP

    它是基于X.500标准的,可是简单多了而且能够依据须要定制。

    X.500不同,LDAP支持TCP/IP。这对訪问Internet是必须的。LDAP的核心规范在RFC中都有定义,全部与LDAP相关的RFC都能够在LDAPman RFC网页中找到.

    二.简单的Socket通信

    首先我们来看一个简单的演示样例:



    在这个演示样例中,有几点须要说明一下:

    1.这个演示样例中不管是在server端还是client都频繁使用了encode()decode()转码和解码,这是非常必要的。否则会出现TypeError:'str' does not support the buffer interface至于原因,能够查看一下Python3的官方文档,官方文档大体是这么个意思。就是说,从Python2Python3的演变时,套接字传送的数据全部转变成Byte类型了,也即:

    socket.send(bytes[, flags]) 形參为字节类型

    socket.recv(bufsize[, flags]) Receive datafrom the socket. The return value is a bytes object representing the data received.

     

    所以须要用encode()decode()转码和解码,至于encode()decode()。官方给出的解释是这种:

    Codec.encode(input[, errors])

    Encodes the object input and returns atuple (output object, length consumed). Encoding converts a string object to abytes object using a particular character set encoding

     

    Codec.decode(input[, errors])

    Decodes the object input and returns atuple (output object, length consumed). Decoding converts a bytes objectencoded using a particular character set encoding to a string object.

    input must be a bytes object or one whichprovides the read-only character buffer interface – for example, buffer objectsand memory mapped files

    这里官方的解释应该算是非常明了了吧。

    2.刚刚的演示样例中使用的是用户数据报协议(UDP),并不关心可靠性,另一种可靠协议TCP/IP,我们也来试一下:



    三.一些常见的Socket运用

    1.邮件发送

    在邮件发送这一块,我试了非常多次邮箱,发现163的邮箱一次成功,可是QQ邮箱总是登陆不上,花了好长时间都没找到原因,头有点晕了。。。还希望有过了解的朋友能够指点一二。但平时用的最多的还是qq邮箱和gmail邮箱,前者行不通就试了一下后者,发现效果还挺好的,例如以下:

    我们来看一下结果:


    我们来看一下结果:


    尽管Python对于网络这一块非常是方便,可是学起来还是感觉问题多多,突然发现天亮了,好累,睡觉去了


  • 相关阅读:
    使用JS实现网页动态换肤
    数据库更新Sql脚本总结
    Javascript无刷新获取当前时间
    ASP.NET将网页设为桌面图标实现
    解决在IE浏览器中resize事件执行多次
    linux编译安装gcc5.3.0
    JAVA抽象类和接口
    JAVA内部类
    推测竞赛中测试集的正负比例
    Codeforces Round #742 (Div. 2) 题解
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/6773872.html
Copyright © 2020-2023  润新知