Python系列 之 socket模块底层网络接口 - TCP协议类型

Python socket模块学习socket模块socket模块主要对象和方法服务端与多个客户端实现通信socket模块socket模块主要对象和方法通过socket.socket()函数来创建 套接字对象:# socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)s = socket.socket(family=AF_INET, type=SOCK_STREAM)
摘要由CSDN通过智能技术生成

socket模块

socket模块主要对象和方法

  1. 通过socket.socket()函数来创建 套接字对象:
# socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
s = socket.socket(family=AF_INET, type=SOCK_STREAM)

socket.socket()函数参数:
摘自:Python文档 创建套接字

参数 说明
family 地址簇:AF_INET (默认)、AF_INET6、AF_UNIX、AF_CAN、AF_PACKET 或 AF_RDS
type 套接字类型: SOCK_STREAM (默认)、SOCK_DGRAM、SOCK_RAW 或其他 SOCK_ 常量之一
proto 协议号通常为零,可以省略,或者在地址簇为 AF_CAN 的情况下,协议号应为 CAN_RAW、CAN_BCM 或 CAN_ISOTP 之一
fileno 如果指定了 fileno,那么将从这一指定的文件描述符中自动检测 family、type 和 proto 的值。如果调用本函数时显式指定了 family、type 或 proto 参数,可以覆盖自动检测的值。
  1. 将套接字绑定到 address:
# socket.bind(address)
s.bind(address=("127.0.0.1",9898))
参数 说明
address address 的格式取决于地址簇
  1. 启动一个服务器用于接受连接:
# socket.listen([backlog])
 s.listen(5)
  1. 接受一个连接:
# socket.accept()
# accept()方法返回值是一个tuple(conn, address)
conn, addr = s.accept()

socket.accept()方法返回值说明:

返回值 说明
conn 是一个新的套接字对象,请使用该套接字对象在连接上收发数据
address 连接另一端的套接字所绑定的地址,客户端的 address tuple类型(IP,PORT)
  1. 连接到 address 处的远程套接字:
# socket.connect(address)
# 客户端向服务端发起连接
s.connect(("127.0.0.1",9898))
  1. 如果需要接收多个客户端的连接请求,那么每个连接都需要开启新的进程或者是线程
  2. 从套接字接收数据的方法:
# recv方法:socket.recv(bufsize[, flags])
# bufsize 指定一次接收的最大数据量
# 返回值是一个字节对象,表示接收到的数据
data_bytes = conn.recv(1024)
# recvfrom方法:socket.recvfrom(bufsize[, flags])
# 返回值是一个tuple(bytes, address)
# bytes 是字节对象,表示接收到的数据,address 是发送端套接字的地址
data_bytes, addr = conn.recvfrom(1024)

更多接收数据的方法 参考 Python文档

  1. 发送数据给套接字:
# send方法:socket.send(bytes[, flags])
# 返回已发送的字节数
# 应用程序要负责检查所有数据是否已发送,如果仅传输了部分数据,程序需要自行尝试传输其余数据
conn.send(b'Hi!')
conn.send(str("msg").encode("utf-8")

# sendall方法:socket.sendall(bytes[, flags])
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值