python socket 编程

2019-05-08  本文已影响0人  Otis4631

Socket创建函数

socket_family(address family,地址族) 意义
socket.AF_UNIX UNIX域(只能够用于单一的Unix系统进程间通信),地址由单独一个string表示
socket.AF_INET IPv4因特网域 (服务器之间网络通信),地址由(host, port)表示
socket.AF_INET6 IPv6因特网域,地址由(host, port, flowinfo, scopeid)表示
socket.AF_UNSPEC 未指定协议
socket_type 意义
socket.SOCK_STREAM 有序的,可靠的,双向的,面向连接的字节流(默认TCP协议)
socket.SOCK_DGRAM 固定长度的,无连接的,不可开的报文传递
socket.SOCK_RAW IP协议的数据报接口
socket.SOCK_SEQPACKET 固定长度的,有序的,可靠的,面向连接的报文传递
protocol 意义
IPPROTO_IP IPv4协议
IPPROTO_IPV6 IPv6协议
IPPROTO_ICMP 因特网控制报文协议(Internet Control Message Protocol)
IPPROTO_RAW 原始IP数据包协议
IPPROTO_TCP 传输控制协议
IPPROTO_UDP 用户数据报协议

其他创建socket函数

其他函数

地址

字节序

字节序是一个处理器架构特性,用于指示像整数这样的大数据类型内部的字节如何排序。

大端(bing-endian)字节序,最大字节地址出现在最低有效字节(Least Significant Byte, LSB)上。

小端(little-endian)字节序,最低有效字节包含最小字节地址。

不管字节如何排序,最高有效字节(Most Signification Byte, MSB)总是在左边,LSB总是在右边。

image image

对于TCP/IP协议栈使用大端字节序。

有下面四个函数来转换字节序:

地址格式

地址查询

flag标记 描述
AI_ADDRCONFIG 查询配置的地址类型(IPv4或IPv6)
AI_ALL 查找 IPv4 和 IPv6 地址(仅用于AI_V4MAPPED)
AI_CANONAME 需要一个规范的名字(与别名相对)
AI_NUMBERICHOST 以数字格式指定主机地址,不翻译
AI_NUMBERICSERV 将服务指定为数字端口号,不翻译
AI_PASSIVE 套接字地址用于监听绑定
AI_V4MAPPED 如果没有找到IPv6地址,返回映射到IPv6格式的IPv4地址
flags 描述
NI_DGRAM 服务基于数据报而非基于流
NI_NAMEREQD 如果找不到主机名,将其作为一个错误对待
NI_NOFQDN 对于本地主机,仅返回全限定域名的字节点部分
NI_NUMERICHOST 返回主机地址的数字形式,而非主机名
NI_NUMERICSCOPE 对于IPv6,返回范围ID的数字形式,而非名字
NI_NUMERICSERV 返回服务地址的数字形式(即端口号),而非名字

Socket对象方法

选项 参数value的类型 描述
SO_ACCEPTCONN integer 返回信息指示该套接字是否能被监听(仅getsockopt()
SO_BROADCAST integer 如果value非0,广播数据包
SO_DEBUG integer 如果value非0,启动网络驱动调试功能
SO_DONTROUTE integer 如果返回的value非0,绕过通常路由
SO_ERROR integer 返回挂起的套接字错误并清除(仅getsockopt)
SO_KEEPALIVE integer 如果value非0,启动周期性keep-alive报文
SO_LINGER stirng 当还有未发送报文二套接字已关闭时,延迟时间
SO_OOBINLINE integer 当value非0,将带外数据放在普通数据中
SO_RCVBUF integer 接受缓冲区的字节长度
SO_RCVLOWAT integer 接收调用中返回的最小数据字节数
SO_RCVTIMEO string 套接字接收调用的超时值
SO_REUSEADDR integer 如果value非0,重用bind中的地址
SO_SNDBUF integer 发送缓冲区的字节长度
SO_SNDLOWAT integer 发送调用中传送的最小数据字节数
SO_SNDTIMEO string 套接字发送调用的超时值
SO_TYPE integer 表示套接字类型(仅getsockopt
标志 描述(Linux下)
MSG_CMSG_CLOEXEC 为UNIX域套接字上接收的文件描述符设置执行时关闭标志
MSG_DONTWAIT 启动非阻塞操作(相当于使用O_NONBLOCK)
MSG_ERRQUEUE 接受错误信息作为辅助数据
MSG_OOB 如果协议支持,获取带外数据
MSG_PEEK 返回数据内容而不是真正取走数据
MSG_TRUNC 即使数据包被截断,也返回数据包的实际长度
MSG_WAITALL 等待直到所有数据可能(仅SOCK_STREAM)

作者:JianMing
链接:https://www.jianshu.com/p/9207700ec26d
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

上一篇下一篇

猜你喜欢

热点阅读