我试图通过TCP连接控制一些测试设备。该设备附带了您可以通过TCP控制的软件。基本上,您可以输入客户端计算机的IP地址和端口,还有一个指示灯,显示该端口上有一个打开的侦听会话(这都在设备软件界面上)
我使用SocketTest3(免费软件)对此进行了测试,并且能够启动监听会话以及从另一台计算机发送命令。现在,我想用Python控制设备。我在与测试设备相同的机器上运行服务器和客户端的代码(使用本地IP地址)。当我只是运行代码(关闭设备软件)时,我能够发送,接收和打印我发送的消息。当我打开设备软件(控制所需)时,我能够启动监听会话(指示灯显示在设备软件上),但是当我发送命令时没有任何反应(没有错误,没有收到任何错误)。消息也不会发送回客户端进行打印。
有什么想法吗?这可能是我很遗憾的事情。
服务器代码:
import sys
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
TCP_IP = '127.0.0.1'
TCP_PORT = 8001
s.bind((TCP_IP, TCP_PORT))
s.listen(5)
connection, client_address = s.accept()
BUFFER_SIZE = 20
print 'Address: ', client_address
while 1:
print "receiving..."
data = connection.recv(BUFFER_SIZE)
print data
if not data: break
print "received data:", data
connection.send(data) # echo
connection.close()
客户代码:
import socket
TCP_IP = '127.0.0.1'
TCP_PORT = 8001
BUFFER_SIZE = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
print "sending message..."
s.sendall('ST<CR>') # Send command
print "receiving message..."
data = s.recv(BUFFER_SIZE)
s.close()
print "received data:", data
答案 0 :(得分:0)
对于那些想知道camerausb代码中缺少什么的人,我认为他没有看到客户端的print语句中的任何内容,因为他没有使用repr()来格式化数据。我有类似的问题,但这对我有用:
print 'Received', repr(data)