python socket编程3 - socket的选项

在使用 socket 前,需要先创建一个 socket 对象

复制代码
my_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

其中的参数,在 python socket编程1 中已经详细列举并说明。

有了 my_socket 之后,可以对 socket 进行细致化的设置,使用 setsockopt(...)方法。

复制代码
my_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, True)
my_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)

本篇主要列举说明 socket option的内容。

一、setsockopt 的定义

复制代码
def setsockopt(self, __level: int, __optname: int, __value: int | bytes)

二、setsockopt 的三个参数

level : 参数设置的生效级别

optName : 选项的名称

value : 选项设置的值

1、 leve ( 生效级别) 的取值范围

复制代码
SOL_IP = 0
SOL_SOCKET = 65535
SOL_TCP = 6
SOL_UDP = 17

2、optName 设置选项的名称

复制代码
SOMAXCONN = 2147483647
SO_ACCEPTCONN = 2
SO_BROADCAST = 32  # 设置或获取广播标识. 当选择此选项时, 数据报套接字接收向广播地址发送的数据包, 并且可以向广播地址发送数据包. 这一选项对于面向流的套接字无效.
SO_DEBUG = 1
SO_DONTROUTE = 16   # 不通过网关发送, 只能发送给直接连接的主机.
SO_ERROR = 4103
SO_EXCLUSIVEADDRUSE = -5
SO_KEEPALIVE = 8   # 允许在面向连接的套接字上发送 keep-alive 消息的功能
SO_LINGER = 128
SO_OOBINLINE = 256   # 如果打开这个选项,带外(Out-of-Band)数据可以直接放入接收数据流
SO_RCVBUF = 4098    # 设置或得到套接字接收缓冲区的最大字节数。
SO_RCVLOWAT = 4100
SO_RCVTIMEO = 4102
SO_REUSEADDR = 4  # 表示在一个 bind() 调用中对提供给它的地址使用的确认规则应该允许重复使用本地地址.
SO_SNDBUF = 4097   # 设置或得到套接字发送缓冲区的最大字节数.
SO_SNDLOWAT = 4099
SO_SNDTIMEO = 4101
SO_TYPE = 4104
SO_USELOOPBACK = 64

###3、value 值

复制代码
True
或者
False

参考网址:

相关推荐
青春不败 177-3266-05209 分钟前
基于R、Python的Copula变量相关性分析及AI大模型应用
人工智能·python·r语言·贝叶斯·统计学·copula
那年窗外下的雪.16 分钟前
AIDC 学习日志 Day 3:OSPF Underlay 实验、故障排查与深入解析
服务器·网络·php
星恒讯工业路由器36 分钟前
IP地址冲突:成因、影响与工业网络中的应对策略
网络·信息与通信·ip地址冲突·工业网络·网络故障排查·ip-mac绑定
汤姆yu37 分钟前
基于python大数据的高校舆情监测系统的设计与实现
大数据·开发语言·python·分享·分析·舆情
深圳恒讯39 分钟前
CN2 GIA和CN2 GT的区别
运维·服务器·网络
Cory.眼43 分钟前
Python爬虫实战:从入门到进阶
开发语言·爬虫·python
qq_422152571 小时前
Token到底是什么?Tokenizer分词机制与中文token开销入门科普
人工智能·python·深度学习
盗理者1 小时前
AI Agent 技能分享|从零实现一个 MCP Server,让 AI Agent 安全调用内部系统
网络·人工智能·安全·agent
buyue__1 小时前
Python实现连接MySQL数据库并执行目录下的所有SQL文件,遇到错误时终止执行。
python·mysql
国科安芯1 小时前
详解ADC 规则组外部触发:CH2、CH3 与 TRGO2
运维·网络·单片机·嵌入式硬件·mcu·系统架构