【问题标题】:How can I connect to a remote socket server with "namespace" and parameters?如何使用“命名空间”和参数连接到远程套接字服务器?
【发布时间】:2013-11-28 03:56:46
【问题描述】:

我需要使用 ws://localhost:8006/user?id=666 之类的 URL 从 python 客户端连接到 tornado 服务器。

我尝试过这样的事情:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect('ws://localhost:8006/user?id=666')
print s.recv(1024)
s.close

...并得到以下错误:

TypeError: getsockaddrarg: AF_INET address must be tuple, not str

谢谢

【问题讨论】:

  • 为什么不使用 python websocket 客户端库?

标签: python sockets tornado


【解决方案1】:

您不会连接到带有namespaceparameters 的远程套接字。您连接到主机和端口。时期。 Python 的 socket module 是原生套接字的薄包装器。它对 http 或 ws 之类的协议一无所知。

您可以连接到您的网络套接字使用的主机和端口。然后你可以发送任何你喜欢的参数......但它不会理解它们,除非你使用websocket protocol

最好的办法是使用别人写的 websocket 客户端(见一些答案here

如果你想自己写,here 是一个最小的例子。

【讨论】:

    【解决方案2】:

    您必须将字符串转换为元组。实例:

    x = "(1,2,3)"
    t = tuple(int(v) for v in re.findall("[0-9]+", x))
    

    【讨论】:

      猜你喜欢
      • 2021-12-15
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 2015-06-13
      • 2018-10-11
      • 2014-12-09
      • 1970-01-01
      相关资源
      最近更新 更多