Python—网络通信编程之套接字基本原理

Socket()函数的参数详解

Socket()函数的参数有三个:

  • 参数一:这个参数含义说明定义的socket实例默认是通过ipv4进行连接的。
  1. socket.AF_INET:  默认IPv4。使用ipv4进行连接通信。
  2. socket.AF_INET6:用于IPv6。使用ipv6进行连接通信。
  3. socket.AF_UNIX:只能够用于单一的Unix系统进程间通信。
  • 参数二:前面两个用的多,后面三个用的少。
  1. socket.SOCK_STREAM:流式套接字,传输层基于tcp协议进行通信。
  2. socket.SOCK_DGRAM:数据报套接字,传输层基于udp协议进行通信。
  3. socket.SOCK_RAW:     原始套接字,访问底层协议的套接字。
  4. socket.SOCK_RDM:     可靠UDP形式。
  5. socket.SOCK_SEQPACKET:可靠的连续数据包服务。
  • 参数三:协议号。
  1. 0:默认,可以省略。
  2. CAN_RAW或CAN_BCM:地址族为AF_CAN时。

套接字属性

import socket

server = socket.socket()
server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)        # 设置端口立即重用

print(server.getsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR))   # 获取选项值:1
print(server.fileno())           # 套接字描述符:3
print(server.type)               # 套接字类型:SocketKind.SOCK_STREAM

server.bind(('127.0.0.1',3120))
print(server.getsockname())      # 获取绑定的地址:('127.0.0.1', 3120)

server.listen(5)
conn, addr = server.accept()
print(conn.getpeername())        # 获取客户端的地址:('127.0.0.1', 57158)

  

https://www.cnblogs.com/ftl1012/p/9384449.html

https://www.cnblogs.com/aspirant/p/9166944.html

https://www.sooele.com/1410.html

https://www.jb51.net/article/111899.htm

https://www.linuxidc.com/Linux/2017-09/146988.htm

https://www.cnblogs.com/JohnABC/p/6076006.html

https://blog.csdn.net/zhuangzi123456/article/details/84400108

https://blog.csdn.net/wuchuanpingstone/article/details/82964256

https://www.cnblogs.com/huchong/p/8613308.html

https://www.jianshu.com/p/e26594304e11

原文地址:https://www.cnblogs.com/liuhaidon/p/12195842.html