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 握手失败(错误请求)