001_Python网络编程入门之什么是Socket

不同电脑或者手机上不同进程间的通信

在我们的电脑上或者手机上每一个软件都是一个独立的进程,在操作系统中都有唯一的一个PID(进程ID)去做标识,但是进程的资源都是独享,而且在不同的设备上用PID是不能去作为进程的唯一标识,在网络中这是行不通的。

但是TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用进程(进程)。(进程再启动后会占用一个端口)

什么是socket

socket翻译为套接字,是进程间通信的一种方式,它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的

例如我们每天浏览网页、QQ 聊天、收发 email 等等
001_Python网络编程入门之什么是Socket_第1张图片
在 Python 中 使用socket 模块的函数 socket 就可以完成:

import socket
socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None)

参数说明:

  • family:
    地址系列应为AF_INET(默认值),AF_INET6,AF_UNIX,AF_CAN或AF_RDS。
    (AF_UNIX 域实际上是使用本地 socket 文件来通信)
  • type:
    • SOCK_STREAM – TCP类型,保证数据顺序及可靠性;
    • SOCK_DGRAM – UDP类型,不保证数据接收的顺序,非可靠连接;
    • SOCK_RAW – 原始类型,允许对底层协议如IP或ICMP进行直接访问,不太常用。
  • proto:
    协议号通常为零,可以省略,或者在地址族为AF_CAN的情况下,协议应为CAN_RAW或CAN_BCM之一。
  • fileno:
    如果指定了fileno,则其他参数将被忽略,导致带有指定文件描述符的套接字返回。
    与socket.fromfd()不同,fileno将返回相同的套接字,而不是重复的。
    这可能有助于使用socket.close()关闭一个独立的插座。

创建一个tcp socket(tcp套接字)

import socket

# 创建tcp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# ...这里是使用套接字的功能(省略)...

# 不用的时候,关闭套接字
s.close()

创建一个udp socket(tcp套接字)

import socket

# 创建udp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# ...这里是使用套接字的功能(省略)...

# 不用的时候,关闭套接字
s.close()

对socket的使用模式一般都为:

  • 创建套接字
  • 使用套接字收发数据
  • 关闭套接字

你可能感兴趣的:(网络编程,socket,python,websocket,http)