Python 创建 socket 对象
套接字编程的第一步是首先使用 socket 模块的构造函数 socket()创建一个 socket 对象:
socket.socket([family[, type[, proto]]])
其中,
- family:套接字家族,可以是 AF_UNIX 或 AF_INET,通常是 AF_INET,以用于互联网的
网络编程。 - type:套接字类型,可以根据是面向连接的网络通信还是面向无连接的网络通信分为
SOCKSTREAM 或 SOCKDGRAM。 - Protocol:默认为 0。
套接字类型分为 SOCKSTREAM 和 SOCKDGRAM,前者用于面向连接的网络通信,后者用于面向无连接的网络通信。而通信双方通常分别扮演两种角色,一种角色是服务器,用于监听来自其他套接字的网络请求;另一种角色是客户,用于发起网络请求,即向服务器请求网络服务。根据是否为面向连接的网络通信,套接字的网络通信主要分为 TCP 和 UDP 两种。
面向连接的 socket 通信要在通信双方之间建立一个可靠的、始终连接的通信管道,这个过程类似人们打电话的过程,数据发送和接收通过这个确定的连接进行:
import socket #导入 socket 模块
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #创建一个 socket 对象
无连接的 socket 通信无须通信双方建立连接,就可以直接根据对方的地址发送数据,发送的数据中包含了双方的地址,接收方可以从接收的数据中知道发送方的地址。这个过程类似人们发短信或邮寄信件:
import socket #导入 socket 模块
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #创建一个 socket 对象