首页 > 解决方案 > 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 中。

标签: python

解决方案


SOL_SOCKET - 这定义了协议级别(这里是套接字级别)。由整数常量 SOL_SOCKET 表示。


推荐阅读