服务器具有预设的初始响应时如何发送套接字消息?

时间:2019-07-18 22:55:42

标签: python sockets tcp blackmagic

我正在为Blackmagic的以太网控制协议(如https://documents.blackmagicdesign.com/UserManuals/HyperDeckManual.pdf?_v=1528269592000,第60页中所述)进行python绑定。但是,简单的套接字连接似乎失败了,因为服务器的问候拒绝了每个命令。

该协议记录了软件如何与某些Blackmagic设备进行通信,在这种情况下,Blackmagic的hyperdeck,该设备运行一个TCP服务器,不断侦听端口9993,在cmd上,我可以简单地远程登录并发出命令,就可以了期望它在python中一样简单,但是对于服务器的问候消息(设备的信息),每个命令都会被忽略。我已经使用套接字至少3个月了,并且尝试了几种代码方法,但似乎都失败了。

对于我使用过的最简单的测试:

import socket

HOST = "device's ip"
PORT = 9993        

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall(b'play')
data = s.recv(1024)

print(data)

和修改后的版本以尝试重复该命令:

import socket
import time

HOST = "device's ip"
PORT = 9993        

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall(b'play')
data = s.recv(1024)
time.sleep(2)
s.sendall(b'play')

它应开始记录的视频播放,并在我通过telnet发出命令时发生,但是该命令被完全忽略,数据始终等于:b'500连接信息:\ r \ n协议版本:1.9 \ r \ nmodel:HyperDeck Studio Mini \ r \ n \ r \ n'(服务器的字节形式的问候消息,应改为200 ok或记录的某种错误/确认消息)。

这令人难以置信,我想到了使用子进程并通过cmd发出命令作为替代方法,但有一些事情告诉我,有一种更简单的解决方法。

0 个答案:

没有答案