Python 收听从Windows运行Raspbian的WebSocket
我使用Python的Python 收听从Windows运行Raspbian的WebSocket,python,websocket,raspbian,python-asyncio,Python,Websocket,Raspbian,Python Asyncio,我使用Python的asyncio和websockets模块创建了一个websocket。此服务器在同一台机器上正常工作。这是服务器的实际代码: import sys import os import asyncio import websockets @asyncio.coroutine def receive(websocket, path): data = yield from websocket.recv() print('< {}'.format(data))
asyncio
和websockets
模块创建了一个websocket。此服务器在同一台机器上正常工作。这是服务器的实际代码:
import sys
import os
import asyncio
import websockets
@asyncio.coroutine
def receive(websocket, path):
data = yield from websocket.recv()
print('< {}'.format(data))
output = 'Sent data from server: {}'.format(data)
yield from websocket.send(output)
print('> {}'.format(output))
start_server = websockets.serve(receive, '127.0.0.1', 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
我已在Raspbian上安装了ufw
,以使用以下命令启用端口8765:
ufw allow 8765
但它不起作用。在Windows计算机上,命令
nmap -p 8765 192.168.0.26
生成以下结果:
PORT STATE SERVICE
8765/tcp closed ultraseek-http
而且。。。命令
ufw status
是否有人可以提出一些建议来解决客户端和服务器之间的通信问题。这里有一个问题:
start_server = websockets.serve(receive, '127.0.0.1', 8765)
您已告知websockets仅在127.0.0.1上使用,因此您只能接收来自本地主机的连接,并且只能在传统IPv4上使用。本地主机IPv6连接(默认)和来自其他计算机的所有连接都将收到连接拒绝错误
如果要从本地计算机外部接收连接,应将主机
设置为无
或空字符串。这将接受来自IPv6和IPv4上任何位置的连接,当然要遵守任何防火墙规则
start_server = websockets.serve(receive, None, 8765)
主机和端口直接传递给文档的主机:
- 如果主机是字符串,则TCP服务器将绑定到主机指定的单个网络接口
- 如果主机是一个字符串序列,则TCP服务器将绑定到该序列指定的所有网络接口
- 如果主机为空字符串或无,则假定所有接口,并返回多个套接字的列表(最有可能是一个用于IPv4,另一个用于IPv6)
start_server = websockets.serve(receive, None, 8765)