gpt4 book ai didi

python - 如何在Python中通过套接字建立连接?

转载 作者:太空宇宙 更新时间:2023-11-03 19:08:11 25 4
gpt4 key购买 nike

我有以下脚本,我希望连接到我们的产品,发送 tcl 命令(设置频率和其他一些命令),但它只是显示:

import Server

Server.ScktConn()

frequency(450-2500): 600

recv: 0 ace_set_frequency C1 600

这是第一个命令,但它甚至没有设置频率(仅显示命令,但不应用它)!

这是脚本:

import socket
import threading
import time

address = ('127.0.0.1', 5426)
def ScktRecv():
r = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
r.bind(address)
r.listen(5)
conn, _ = r.accept()
csvid = conn.recv(4096)
print "recv: %s" % csvid
conn.close()

def ScktConn():
recv_thread = threading.Thread(target=ScktRecv)
recv_thread.start()
time.sleep(1)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(address)
# our local IP is 192.168.2.1, but it works even with 127.0.0.1, I don't know from where #it is coming
Freq=raw_input('Frequency(450-2500): ')
CmdF='0 ace_set_frequency C1 '+str(Freq)+' \r\n'
s.send(CmdF)
s.send('0 ace_azplayer_remove_player AzPlayer1 \r\n')
s.send('0 ace_azplayer_add_player \r\n')
s.send('0 ace_azplayer_add_ace AzPlayer1 C1\r\n')
Path='C:/Users/amir_rajaee/Desktop/gridview_script/PBF/4x4U_wocorr_SNR.csv'
s.send('0 ace_azplayer_load_csvfile AzPlayer1 '+Path+' \r\n')
s.close()

但是当我使用以下脚本时,它会设置频率,但我的问题是,我没有接收器;我需要最后一个命令的输出(加载 csv 文件)!:

import socket
def ScktConn():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 5006))
Freq=raw_input('Frequency(450-2500): ')
CmdF='0 ace_set_frequency C1 '+str(Freq)+' \r\n'
s.send(CmdF)
s.send('0 ace_azplayer_remove_player AzPlayer1 \r\n')
s.send('0 ace_azplayer_add_player \r\n')
s.send('0 ace_azplayer_add_ace AzPlayer1 C1\r\n')
Path='C:/Users/amir_rajaee/Desktop/gridview_script/PBF/4x4U_wocorr_SNR.csv'
s.send('0 ace_azplayer_load_csvfile AzPlayer1 '+Path+' \r\n')

最佳答案

您似乎有两个问题。

1) 您期望打印 tcl 命令将执行它们。事实并非如此。请查看subprocess library了解如何实现这一目标。

2) 您只需调用 socket.recv 一次。要捕获所有发送的消息,您需要接收者持续监听发送的消息。将 SockRecv 更改为:

address = ('127.0.0.1', 5426)
def ScktRecv():
r = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
r.bind(address)
r.listen(5)
conn, _ = r.accept()
while True:
csvid = conn.recv(4096)
if csvid:
print "%s" % csvid
conn.close()

您将需要进行进一步修改以正确处理线程的生命周期。

关于python - 如何在Python中通过套接字建立连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13961783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com