что такое laddr и raddr в рукопожатии - PullRequest
0 голосов
/ 25 июня 2019

Я изучаю, как работает websocket в python 3. Я добавляю print (sock) для определения рукопожатия _handshake.py в источнике websocket, чтобы узнать, что представляет собой сообщение внутри sock, и результат выглядит так:

Print out sock:<ssl.SSLSocket fd=508, family=AddressFamily.AF_INET, type=0, proto=0, laddr=('192.168.1.2', 58730), raddr=('202.160.125.211', 443)>

Интересно, что такое laddr и raddr?Я знаю, что это слишком просто, но без достаточного фона, как мне кажется, сложно понять, что я искал gg по этим ключевым словам, но объяснений нет.

def handshake(sock, hostname, port, resource, **options):
    headers, key = _get_handshake_headers(resource, hostname, port, options)
    header_str = "\r\n".join(headers)
    send(sock, header_str)
    dump("request header", header_str)
    print("Print out sock:{}".format(sock))
    status, resp = _get_resp_headers(sock)
    if status in SUPPORTED_REDIRECT_STATUSES:
        return handshake_response(status, resp, None)
    success, subproto = _validate(resp, key, options.get("subprotocols"))
    if not success:
        raise WebSocketException("Invalid WebSocket Header")
    return handshake_response(status, resp, subproto)

1 Ответ

2 голосов
/ 25 июня 2019

laddr означает локальный адрес, а raddr означает удаленный адрес сокета. В зависимости от контекста процесса или приложения один адрес становится удаленным для другого сокета.

...