当前位置: 首页 > news >正文

建网站内容网站优化推广怎么做

建网站内容,网站优化推广怎么做,购物网页设计总结,门户网站开发平台[Python学习日记-76] 网络编程中的 socket 开发 —— 介绍、工作流程、socket 模块用法和函数介绍 简介 socket 介绍 socket 的工作流程及用法 简介 前面在[Python学习日记-75] 计算机基础与网络当中介绍了一大堆基础知识之后我们终于开始进入到网络编程的开发阶段了&#x…

[Python学习日记-76] 网络编程中的 socket 开发 —— 介绍、工作流程、socket 模块用法和函数介绍

简介

socket 介绍

socket 的工作流程及用法

简介

        前面在[Python学习日记-75] 计算机基础与网络当中介绍了一大堆基础知识之后我们终于开始进入到网络编程的开发阶段了,那到底什么是网络编程呢?从编程开发的角度来看其实就是进行 socket 开发,而我们前面提到学习网络编程就是想要写出一个 C/S 架构的软件,而学习 socket 就是为了完成 C/S 架构的开发。

        为什么学习 socket 一定要先学习网络协议呢?首先,我们学习网络编程的目标是为了写出一个基于 socket 编程开发一款自己的 C/S 架构的软件;其次,C/S架构的软件(软件属于应用层)是基于网络进行通信的;然后,网络的核心即一堆协议,而协议即是标准,你想开发一款基于网络通信的软件,就必须遵循这些标准;最后,就让我们从这些标准开始研究,开启我们的 socket 编程之旅。下图为基于 TCP/IP 协议集的网络应用传输流程图

        如果对网络还不了解的同学,建议先看看前面[Python学习日记-75] 计算机基础与网络这篇博客。

socket 介绍

一、socket 概念

        套接字(socket)是网络编程中用于实现网络通信的一种机制。它是一种特殊的文件描述符,可以通过它进行网络连接、数据传输和接收等操作。socket 是应用层与 TCP/IP 协议集通信的中间软件抽象层,即它是一组接口。在设计模式中,socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议集隐藏在 socket 接口后面,这就相当于在应用层和传输层之间插入了一层东西,被称之为 socket 抽象层。对用户来说,一组简单的接口就是全部,在使用时只需调用 socket 接口让其去组织数据,就可以符合指定的协议即可传输数据。

        所以,我们无需深入理解 TCP/UDP 协议,因为 socket 已经为我们封装好一个个接口了,我们只需要遵循 socket 的规则去编程调用接口,这样写出的程序自然就是遵循 TCP/UDP 的标准了。 

二、套接字发展史及分类

        套接字起源于20世纪70年代加利福尼亚大学伯克利分校版本的 Unix,即人们所说的 BSD Unix。因此,有时人们也把套接字称为“伯克利套接字”或“BSD 套接字”。一开始,套接字被设计用在同一台主机上多个应用程序之间的通讯。这也被称进程间通讯(IPC)。套接字有两种(或者称为有两个种族),分别是基于文件型的和基于网络型的。

1、基于文件型的套接字家族

        这类套接字被称为:AF_UNIX,在 Unix 中一切皆文件,基于文件的套接字调用的就是底层的文件系统来取数据,两个套接字进程运行在同一机器,可以通过访问同一个文件系统间接完成通信。

2、基于网络型的套接字家族

        这类套接字被称为:AF_INET/AF_INET6,AF_INET 被用于 IPv4,而 AF_INET6 被用于 IPv6。当然还有很多其他的地址家族,不过它们要么是只用于某个平台,要么就是已经被废弃,要么是很少被使用,或者是根本没有实现,在所有地址家族中,AF_INET 是使用最广泛的一个,在 Python 中支持很多种地址家族,但是在网络编程中大部分时间我们只使用 AF_INET。

socket 的工作流程及用法

一、socket 的工作流程

        socket 的工作模式与生活中的打电话非常类似,假设你要打电话给你一个朋友,你们之间要建立起连接来通话需要几步呢?看看是不是需要以下步骤:

  1. 买手机,绑定手机卡(插卡)
  2. 拨打你朋友的手机号码
  3. 朋友听到铃声后接起电话
  4. 通话连接建立起来了

        这些步骤按顺序分别对应了 socket 连接过程的 socket()、connect()、listen()/accept();具体的 socket 建立过程如下图所示

        如上图所示,服务器端先初始化 socket ——> 使用 bind() 绑定 IP 和 端口 ——> 使用 listen() 对端口进行监听 ——> 调用 accpet() 进行阻塞,等待客户端进行连接;这个时候有一个客户端进行初始化 socket ——> 使用 connect() 连接服务器,这个时候如果连接成功了客户端和服务器端的连接就建立了;客户端和服务器端分别使用 write() 和 read() 来发送数据和处理数据;当数据传输处理完毕后需要断开连接时会由客户端使用 close() 来发起结束请求,并关闭客户端的 socket,服务器端收到结束请求后将会在数据处理完毕后使用 close() 来关闭 socket,这样本次交互就结束了。

二、socket() 模块函数的用法

1、实例化 socket

import socket# 实例化套接字
socket.socket(socket_family, socket_type, protocal=0)
# socket_family:可以是 AF_UNIX 或 AF_INET
# socket_type:可以是 SOCK_STREAM 或 SOCK_DGRAM
# protocol 一般不填,默认值为0# 获取 TCP/IP 套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 获取 UDP/IP 套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 由于 socket 模块当中属性太多了,如果每个属性前面都需要打 socket. 实在是太费事了,所以这里就破例使用了 "from socket import *" 把 socket 模块里的所有属性都带到我们的命名空间里了,这样能大幅减短我们的代码。
# 例如
tcp_socket = socket(AF_INET, SOCK_STREAM)

2、socket 中的函数

服务器端的套接字函数:

# 绑定(IP地址,端口号)到套接字
s.bind(ip, port)# 开始监听 TCP 端口
s.listen(backlog)    # backlog 是最大挂起连接数# 被动接受 TCP 客户端的连接,等待连接的到来,即当前服务器端是阻塞式的进行等待
s.accept()

客户端的套接字函数:

s.connect(ip, port)    # 主动初始化 TCP 服务器连接
s.connect_ex(ip, port)    # connect() 函数的扩展版本,出错时返回出错码,而不是抛出异常

公共用途的套接字函数:

# 接收 TCP 数据
s.recv(buffer_size)    # buffer_size 是一次接收的最大数据量,会将接收到的数据作为 string 返回# 发送 TCP 数据
s.send(data)    # send 在待发送数据量大于己端缓存区剩余空间时,数据丢失,不会发完# 发送完整的 TCP 数据
s.sendall(data)    # 本质就是循环调用 send,sendall 在待发送数据量大于己端缓存区剩余空间时,数据不丢失,循环调用 send 直到发完# 接收 UDP 数据
s.recvfrom(buffer_size)# 发送 UDP 数据
s.sendto(data)# 连接到当前套接字的远端的地址
s.getpeername()# 当前套接字的地址
s.getsockname()# 返回指定套接字的参数
s.getsockopt()# 设置指定套接字的参数
s.setsockopt(level, option, value)
# level:选项的级别,可以是 SOL_SOCKET 或 IPPROTO_TCP 等
# option:需要设置的选项,可以是 SO_REUSEADDR、SO_KEEPALIVE、TCP_NODELAY 等
# value:给选项设定的值# 关闭套接字
s.close()

面向锁的套接字函数:

# 设置套接字的阻塞与非阻塞模式
s.setblocking(bool)    # True 或 False# 设置阻塞套接字操作的超时时间
s.settimeout(timeout)    # 以秒为单位,当值为 None 或 0 时表示无超时,即阻塞式# 得到阻塞套接字操作的超时时间
s.gettimeout()

面向文件的套接字函数:

# 套接字的文件描述符
s.fileno()# 创建一个与该套接字相关的文件
s.makefile(mode)    # mode 是创建文件的 I/O 模式,支持 r(默认)、w、b
http://www.wooajung.com/news/21196.html

相关文章:

  • 莱芜中医院网站重庆网页优化seo公司
  • 加强局门户网站建设事件营销的经典案例
  • 赣州做网站什么价格长春百度网站快速排名
  • 深圳电梯广告制作公司网站国外服务器免费ip地址
  • wordpress to ghost怎么优化网站排名才能起来
  • 做网站需要规划哪些内容seo网站推广方案策划书
  • 乐山网站建设公司windows优化大师下载
  • 全国 做网站的企业海外网络推广平台
  • 服装网站建设怎么写网站推广方案范例
  • html5网站引导页模板自建站平台
  • 天门网站建设建网站需要什么条件
  • 佛山网站建设网站建设收费在seo优化中
  • 南昌市有帮做网站的吗杭州网站seo外包
  • 水产食品企业网站模板链网
  • 哪些网站是做货源的东莞网站优化
  • 网站上文章字体部分复制怎么做百度问问
  • 网页设计实训报告的内容怎么写网站推广优化方案
  • 南京外贸网站建站哪个公司要做网络推广
  • 时尚类网站建设推广信息哪个平台好
  • 无锡做网站公司哪家好计算机培训机构哪个最好
  • 会员卡管理系统哪里买网站seo
  • WordPress设置作者信息济南优化网站的哪家好
  • 北京音乐制作公司长沙官网seo收费标准
  • 苹果直播软件下载网站软文写作技巧
  • 给素材网站做素材方法企业推广网站有哪些
  • 域名查询 站长查询常州seo
  • 洛阳建设网站制作做seo有什么好处
  • 免费网站如何做推广江苏疫情最新消息
  • wordpress复制到剪贴板seo咨询茂名
  • 网页设计与网站的关系武汉网站seo德升