4

ソケットを介して Blender (v2.55) を Web ページに接続したいと考えています。

Web パーツには、Node.js と socket.io を使用できます。私はすでに node.js/socket.io を少し使用していますが、問題ではないと思います。

現在、Blender は Python 3.1 で動作するため、既にソケットがあり、必要に応じてライブラリを追加できます。Python ソケットは初めてです。クライアントを node.js/socket.io に直接接続できますか?

Python doc の基本的なコードを試してみました。


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 は接続されているようですが、データを受信して​​いません。また、ノードは新しいクライアントが接続されていないことを示しています…

他に何か必要ですか?誰か助けてくれたら…</p>

4

2 に答える 2

1

プロトコル/ハンドシェイクがありません。あなたが持っているのは裸のTCPソケット接続です。node.js / socket.ioは、TCPソケットの上にあります。基本的に、socket.ioサーバーへの接続を開くときは、通信に何らかのプロトコル(websockets、longpolling、htmlfileなど)を使用する必要があります。最初のハンドシェイクは、そのプロトコルがどうなるかを定義します。Websocketは、サポートされているプロトコルの1つです。 このブログ投稿はあなたを助けるはずです。WebSocketを実装するのはそれほど難しいことではありません。

于 2010-11-04T00:34:16.887 に答える
0

有効なデータを受信するには、ループの形式を試すことができます。

    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()

ブラウザを使用してホストとポートにアクセスし、確認します

于 2021-09-27T11:22:08.800 に答える