2

我需要使用类似ws://localhost:8006/user?id=666.

我尝试过这样的事情:

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

谢谢

4

2 回答 2

1

您不会使用and连接到远程套接字。您连接到主机和端口。时期。Python 的socket模块是原生套接字的薄包装器。它对 http 或 ws 等协议一无所知。namespaceparameters

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

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

如果你想自己写,这里有一个最小的例子。

于 2013-11-14T22:27:00.633 回答
0

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

x = "(1,2,3)"
t = tuple(int(v) for v in re.findall("[0-9]+", x))
于 2013-11-14T22:25:44.103 回答