【问题标题】:How to connect a Python socket on client-side to Node.js/socket.io?如何将客户端的 Python 套接字连接到 Node.js/socket.io?
【发布时间】:2011-05-04 10:33:46
【问题描述】:

我想通过套接字将 Blender (v2.55) 连接到网页。

对于 web 部分,我可以使用 Node.js 和 socket.io。我已经使用了一点node.js/socket.io,我认为这不是问题。

现在对于 Blender,它在 Python 3.1 上运行,所以我已经有了套接字,如果需要我可以添加库。我是 Python 套接字的新手,我可以将客户端直接连接到 node.js/socket.io 吗?

我尝试使用 Python 文档中的基本代码:


import socket
import sys

HOST, PORT = "127.0.0.1", 8080
data = "Hello from Blender"

# Create a socket (SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Connect to server and send data
sock.connect((HOST, PORT))
sock.send(bytes(data + "\n","utf8"))

# Receive data from the server and shut down
received = sock.recv(1024)
sock.close()

print("Sent:     %s" % data)
print("Received: %s" % received)

结果:

发送:来自 Blender 的你好 收到:b''

Blender 似乎已连接,但未接收数据。 Node 也显示没有新的客户端连接......

我还需要别的吗?如果有人可以帮助我...

【问题讨论】:

  • 你可以使用telnet或netcat(如telnet 127.0.0.1 8080)连接到“127.0.0.1”、8080并通过telnet发送/接收数据吗?你的 python 脚本看起来不错。
  • 它已连接,但在 Node 端没有通知...我之前在 Python 套接字服务器上使用过这段代码,效果很好...
  • 好吧,看来我得看看 UDP 套接字,包括 Python 和 Node.js 的……

标签: python sockets node.js blender


【解决方案1】:

您缺少协议/握手。您所拥有的是一个裸 TCP 套接字连接。 node.js/socket.io 位于 TCP 套接字之上。基本上,当您打开与 socket.io 服务器的连接时,它期望您使用某种协议进行通信(websockets、longpolling、htmlfile 等)。初始握手定义了该协议将是什么。 Websockets 是支持的协议之一。 This blog post 应该可以帮助你。实现 websocket 看起来并不难。

【讨论】:

【解决方案2】:

你可以试试循环的形式接收有效数据。

    import socket
    host="127.0.0.1"
    port=8088
    web=socket.socket()
    web.bind((host,port))
    web.listen(5)
    print("recycle")
    while True:
        conn,addr=web.accept()
        data=conn.recv(8)
        print(data)
        conn.sendall(b'HTTP/1.1 200 OK\r\n\r\nHello world')
        conn.close()

并使用您的浏览器访问主机和端口进行检查

【讨论】:

    猜你喜欢
    • 2014-10-01
    • 1970-01-01
    • 2015-01-13
    • 2014-05-28
    • 2016-03-01
    • 2021-02-03
    • 2021-12-22
    • 2011-09-27
    • 2018-01-09
    相关资源
    最近更新 更多