我需要使用python将字符串发送到localhost上的特定端口。正在模拟Python中socat的功能
我可以通过使用像这样的命令行上socat实现这一目标:
cat <text file containing string to send> | socat stdin tcp-connect:127.0.0.1:55559
我不想作为一个子命令运行socat命令,所以我想知道如何得到这个工作使用python模块。
我尝试使用套接字失败。下面是我正在使用的脚本,它没有达到预期的效果。
import socket
HOST, PORT = "127.0.0.1", 55559
jsonString = '{"name":"VideoStreamStatus","parameters":{"name":"video_0_0"}}'
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# Connect to server and send data
print "Attempting connection"
sock.connect((HOST, PORT))
print "Sending json string"
sock.sendall(jsonString)
print "String sent"
finally:
sock.close()
print "Sent: {}".format(jsonString)
python脚本执行时没有任何错误,但对正在接收socat数据的进程没有任何影响。下面的Python脚本输出:
Attempting connection
Sending json string
Sent: {"name":"VideoStreamStatus","parameters":{"name":"video_0_0"}}
有什么,我在插座脚本做错了还是有不同的方法,我可以在Python中使用?我会很感激任何建议。谢谢。
编辑:我试图发送字符串的服务器是C++程序的一部分,它使用boost asio acceptor来侦听特定地址和端口上的tcp连接。
您的代码对我来说非常适合。我的服务器'nc -l 55559',在其stdout上显示json字符串。请描述您使用的服务器,以及是什么让您认为“*对接收社区数据的流程没有任何影响”。 –
@Robᵩ我试图发送字符串的服务器是使用boost asio acceptor侦听特定地址和端口上的tcp连接的C++程序的一部分。 – BlooMeth