我需要使用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