gpt4 book ai didi

sockets - python Socket发送ascii命令并接收响应

转载 作者:行者123 更新时间:2023-12-03 12:05:56 24 4
gpt4 key购买 nike

我正在尝试通过 python 中的套接字通信使用 Lantronix EDS2100 模块通过网络建立与 ADAM-4017+ I/O 模块的连接。对于我的一生,我无法让它发挥作用。

EDS 有一个 IP 地址和一个与亚当单元相连的端口 (10001)。我正在尝试向 adam 查询 ch 1 的值(ascii 命令为 #000)

非常感谢任何帮助:

import socket
edsIP = "192.168.1.135"
edsPORT = 10001
MESSAGE="#000\r"


srvsock = socket.socket( socket.AF_INET, socket.SOCK_STREAM)
srvsock.bind( ('',23000))
srvsock.listen(1)
newsock, (remhost, remport) = srvsock.accept()
srvsock.send((MESSAGE),(edsIP, EdsPORT) )



while 1:


data, addr = srvsock.recv(4096)
print ("received message:", data,addr)
srvsock.close()

最佳答案

我对此设备一无所知,但是根据您的描述,您说它期望端口 10001 上的连接。但是您在代码中所做的是打开自己的套接字并监听端口 23000 上的连接,然后等待用于连接。如果您不期望某些东西与您联系,那么您将无缘无故地等待。

如果您的设备只需要连接并发送消息,那么我认为可以这样做:

import socket

edsIP = "192.168.1.135"
edsPORT = 10001
MESSAGE="#000\r"

srvsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
srvsock.settimeout(3) # 3 second timeout on commands
srvsock.connect((edsIP, edsPORT)))
srvsock.sendall(MESSAGE)

data = srvsock.recv(4096)
print "received message:", data

srvsock.close()

更新

您的评论表明您可能正在使用 python3。如果是这样,您可能需要像这样调整代码:
MESSAGE=b'#000\r'

当您收到 bytes响应,如果你想把它变成一个字符串:
print data.decode("UTF-8")

关于sockets - python Socket发送ascii命令并接收响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12167911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com