websocket的握手源代码中的laddr和raddr是啥

Posted

技术标签:

【中文标题】websocket的握手源代码中的laddr和raddr是啥【英文标题】:what is laddr and raddr in handshake souce code of websocketwebsocket的握手源代码中的laddr和raddr是什么 【发布时间】:2019-06-25 07:41:33 【问题描述】:

我正在学习 websocket 如何在 python 3 中工作。 我将 print(sock) 添加到 websocket 源中 _handshake.py 的 def 握手中,以了解 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】:

laddr 表示本地地址,raddr 表示套接字的远程地址。根据进程或应用程序的上下文,一个地址成为另一个套接字的远程地址。

【讨论】:

以上是关于websocket的握手源代码中的laddr和raddr是啥的主要内容,如果未能解决你的问题,请参考以下文章

Node.JS、Socket.IO 和集群中的 WebSocket 握手不起作用

Opera 12 中的 WebSocket 握手失败(错误请求)

WebSocket 握手 - 意外响应代码 200 - AngularJs 和 Spring Boot

WebSocket 握手期间出错:意外响应代码:503

新协议握手 hybi-10 中的数据编码

https中的WebSocket打开握手超时