基本TCP连接

时间:2016-08-13 04:50:52

标签: python sockets tcp

我试图通过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

1 个答案:

答案 0 :(得分:0)

对于那些想知道camerausb代码中缺少什么的人,我认为他没有看到客户端的print语句中的任何内容,因为他没有使用repr()来格式化数据。我有类似的问题,但这对我有用:

print 'Received', repr(data)