python - 使用python访问tcp
问题描述
寻求以下帮助。我需要使用 python 访问我设备的端口 5556 上提供的实时天气数据,以便我可以进一步处理它。
命令提示符nc 127.0.0.1 5556
处的命令导致以下响应:
20201107175011 th0 -0.5 93 -1.5 0
20201107175055 wind0 0 0.0 0.0 -0.5 0
20201107175045 rain0 0.0 153.8 0.0 0
20201107175041 thb0 21.6 32 4.2 899.0 1006.0 0 1
20201107175028 data10 0.00 0
20201107175028 data11 61.84 0
20201107175028 data12 1.00 0
20201107175028 data13 12.00 0
20201107175028 data15 106.00 0
20201107175028 data16 1.00 0
20201107175028 t9 50.5 0
使用以下 python 脚本会导致:OSError: [Errno 98] Address in use
.
!/usr/bin/env python
import socket
HOST = '127.0.0.1' # Standard loopback interface address (localhost)
PORT = 5556 # Port to listen on (non-privileged ports are > 1023)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data:
break
print(data)
我究竟做错了什么?python有没有办法接收使用netcat接收到的相同响应?
谢谢。
猴面包树
解决方案
使用客户端脚本而不是服务器脚本有效。谢谢。
#!/usr/bin/env python3
import socket
HOST = '127.0.0.1'
PORT = 5556
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
data = s.recv(1024)
print('Received', repr(data))
推荐阅读
- assembly - 将 4 个字节同时加载到寄存器中的 mips 命令是什么?
- node.js - spawn ffmpeg 进程因权限被拒绝而失败
- wpf - 顶级滚动查看器中的嵌套用户控件不会导致滚动条
- c - 为什么 *str1 和 *(&str1),str 是 C 中 char 数组的名称,不会得到相同的结果?
- python - 列表中语法正确的人类可读字符串(使用牛津逗号)
- openlayers - OL:更改投影(使用 Proj4)不显示 geojson 层(尽管 setVisible 为真)
- visual-studio - Visual Studio Profiler 将“[broken]”显示为函数名称
- python - 将 Python 脚本转换为 PowerShell
- python - 如何获取熊猫系列中值的索引
- node.js - 使用 Node.JS Readline:“TypeError: rl is not async iterable”