前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python套接字

Python套接字

原创
作者头像
用户4845306
修改2019-03-14 18:01:41
1.5K0
修改2019-03-14 18:01:41
举报

客户端/服务器架构

服务器首先会创建一个通信端点,它能够使服务器监听请求。

客户端所需要做的只是创建它的单一通信端点,然后建立一个到服务器的连接。

套接字:通信的端点

套接字

有两种类型的套接字:基于文件的和面向网络的

IPC:进程间通信

Python只支持AF_UNIX(基于文件)、AF_NETLINK(使用标准的BSD套接字接口进行用户级别和内核级别代码之间的IPC)、AF_TIPC(透明的进程间通信)、AF_INET(基于网络)家族。

套接字地址:主机-端口对

一个网络地址由主机名和端口号对组成,有效的端口号范围为0-65535(小于1024的端口号预留给了系统)。

面向连接的套接字与无连接的套接字

面向连接的套接字

面向连接的套接字:在进行通信之前必须先建立一个连接。这种类型的通信也称为虚拟电路或流套接字

实现这种连接类型的主要协议是传输控制协议(TCP)。为了创建TCP套接字,必须使用SOCK_STREAM作为套接字类型。AF_INET的网络版本通常使用因特网协议(IP)来搜寻网络中的主机,所以整个系统通常结合这两种协议(TCP/IP)来进行。

无连接的套接字

与虚拟电路形成鲜明对比的是数据报类型的套接字,它是一种无连接的套接字。实现这种连接类型的主要协议是用户数据报协议(UDP)。为了创建UDP套接字,必须使用SOCK_DGRAM(即datagram)作为套接字类型。因为这些套接字也使用因特网协议来搜寻网络中的主机,所以这个系统也称作UDP/IP

Python中的网络编程

Socket详细介绍

TCP服务器端工作流程

  1. 创建服务器端套接字A
  2. 将套接字A与地址B使用bind函数绑定
  3. 使用listen函数使服务器开始监听
  4. 使用accept函数返回新的套接字对象C及其地址
  5. 使用C的recv函数接受发送到服务器端的数据
  6. 使用C的send函数发送数据

每次接收到一个新的连接就会在服务器端创建一个新的套接字来负责与该连接进行信息的交换

TCP客户端工作流程

  1. 创建套接字A
  2. 使用A的connect函数及服务器所在地址连接服务器
  3. 使用A的send函数发送数据
  4. 使用A的recv函数接受数据

注意,不管是服务器端还是客户端,发送数据时,一定是发送的bytes类型的(Python3中),对于字符串类型,需要使用str.encode('...')进行编码;接受数据时,所接收到的数据类型一定是bytes类型的(Python3中),需要使用相同的编码格式进行解码,即bytes.decode('...')

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 客户端/服务器架构
  • 套接字:通信的端点
    • 套接字
      • 套接字地址:主机-端口对
        • 面向连接的套接字与无连接的套接字
          • 面向连接的套接字
          • 无连接的套接字
      • Python中的网络编程
        • TCP服务器端工作流程
          • TCP客户端工作流程
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档