python - 套接字类型之间的区别

标签 python sockets

是的,我确实已经尝试查找这方面的信息。

Python 套接字文档包含我认为是协议(protocol)的列表:

SO_*
socket.SOMAXCONN
MSG_*
SOL_*
IPPROTO_*
IPPORT_*
INADDR_*
IP_*
IPV6_*
EAI_*
AI_*
NI_*
TCP_*

他们到底是做什么的?假设我用过

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)

这是做什么的?我知道这是一个原始套接字,但是 IPPROTO_IP 是否意味着我必须构建所有内容? (即 IP header 向下到 TCP 到数据?)

Python 文档说我可以在有关套接字的 Unix 文档中找到有关上述内容的信息,但我找不到该文档。有人知道它在哪里吗?

最佳答案

有很多 Linux 手册页描述套接字:

通常,我们将这些参数用于socket:

  1. 地址族:AF_INET为互联网域地址族,AF_UNIX为UNIX域地址族。

  2. 套接字类型:SOCK_STREAM 用于 TCP,SOCK_DGRAM 用于 UDP。当然你可以使用SOCK_RAW直接访问IP协议(protocol)。

  3. 协议(protocol):使用TCP或UDP时,留0即可;使用 RAW 时,可以将协议(protocol)指定为 0,TCP 套接字为 IPPROTO_TCP,UDP 套接字为 IPPROTO_UDP。

并且,SO_表示“套接字选项”,SOL_表示“套接字选项级别”,用于通过setsockopt设置套接字选项(也在 SOCKET 中提到)。

事实上,您可以在这些页面底部的 SEE ALSO 部分找到更多页面。请注意,第 2 或 3 页是具体的系统调用或库函数,第 7 页是您需要的。

关于python - 套接字类型之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24769338/

相关文章:

C++ TCP套接字发送速度

c - 套接字编程,绑定(bind)()错误

Python -c bash swtich 换行符

python - 为什么 django 在我的 url 中附加哈希值?

python - 如何通过命令行在 gui 应用程序中填充文本框?

java.net.SocketException : No buffer space available (maximum connections reached? ): 连接

python - 在 python 中使用 cv2 模块查看二进制图像之类的图像(进入循环)

python - 使用 Django 类 View 获取当前登录用户?

c++ - 我们可以说这是一个简单的 DDOS 僵尸网络吗?

node.js - 远程服务器的socket.io主机名