首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python访问tcp

使用python访问tcp
EN

Stack Overflow用户
提问于 2020-11-08 02:14:30
回答 1查看 31关注 0票数 0

寻找以下方面的帮助。我需要使用python访问设备5556端口上的实时天气数据,这样我就可以对其进行进一步处理。

在命令提示符下输入命令nc 127.0.0.1 5556将产生以下响应:

代码语言:javascript
复制
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

代码语言:javascript
复制
    !/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相同的响应?

谢谢。

猴面包树

EN

回答 1

Stack Overflow用户

发布于 2020-11-08 03:14:53

使用客户端脚本而不是服务器脚本是可行的。谢谢。

#!/usr/bin/env python3

代码语言:javascript
复制
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))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64730906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档