python - SOL_SOCKET 和 SOL_REUSE
问题描述
我正在尝试为 p2p 通信设置一个套接字。AI 找到了这段代码,但我很难理解代码。什么是SOL_SOCKET,还有SOL_REUSE?
有人可以帮我看一下这段代码吗?
#!/usr/bin/env python
import socket, sys
self_broken = False
def wait(c):
print('waiting...')
c.send('waiting')
broken = True
while broken:
status = c.recv(1024)
if status == 'working':
print(status)
if self_broken:
c.send('broken')
else:
c.send('starting')
broken = False
c.close()
def main():
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
host, port = socket.gethostname(), 10001
s.bind((host, port))
s.listen(1)
while True:
c, addr = s.accept()
status = c.recv(1024)
print(addr[0] + ':' + str(addr[1]) + ' > ' + status)
if status == 'broken':
wait(c)
else:
print(status)
c.close()
s.close()
main()
我找到了这个解释,但它适用于 C,它也适用于 Python 吗? 这是针对 C 的,对于 Python 也一样吗?
编辑:谁能告诉我'c'是做什么的?它在等待(c)、c.send 和 c.close 中。
解决方案
SOL_SOCKET - 这定义了协议级别(这里是套接字级别)。由整数常量 SOL_SOCKET 表示。
推荐阅读
- c# - 如何使用 C# 暂停游戏
- javascript - “dom-to-image”图片跨域
- python - 如何计算回归模型中多个特征的敏感性
- php - 如何使用'$row'将一个数据库表中的特定值插入到另一个数据库表中?
- python - 如何正确模拟班级的私人成员
- java - 如何使用 NestedBeanPropertyDefinition
在 Vaadin 12.0.7 中? - asp.net - 如果我们在没有端口号的浏览器中键入 www.domainname.com,如何摆脱端口号后跟域名,例如 www.domainname.com:49200
- powerbi - 如何在与power bi重叠的折线图上显示当年、去年和2年前的销售数据?
- c++ - 如何在 C++ 的另一个模板函数中使用属于模板类的嵌套类型?
- logging - 我可以将 puppet 代理输出重定向到不同的日志文件吗?