如何使用“命名空间”和参数连接到远程套接字服务器?

时间:2013-11-14 22:13:32

标签: python sockets tornado

我需要使用像ws://localhost:8006/user?id=666这样的网址从python客户端连接到龙卷风服务器。

我尝试过这样的事情:

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

由于

2 个答案:

答案 0 :(得分:1)

您没有连接到具有namespaceparameters的远程套接字。您连接主机和端口。期。 Python的socket 模块是本机套接字的瘦包装器。它对http或ws等协议一无所知。

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

您最好的选择是使用其他人编写的websocket客户端(请参阅一些答案here

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

答案 1 :(得分:0)

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

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