我正在使用TCP/IP连接与激光对话并控制其功能。最初,我使用socket.connect()方法连接激光作为客户端,但激光和计算机都具有“相等的状态,所以两者都必须监视接收到的传输以及发送请求”(如上所述在TCP/IP协议手册中)。我如何知道配置/代码,以便即使我作为客户端连接,也可以监视数据?我曾尝试在循环中使用recv(),但我不确定这是否正确。使用Python 2.7监控数据的TCP/IP连接
感谢您的帮助
安德鲁
import socket
import numpy as np
import json
import time
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def connect(IP_addrs = '192.168.1.222', port = 39933):
s.settimeout(10)
s.connect((IP_addrs,port))
myIP = s.getsockname()[0]
msg = {"transmission_id" : [1] , "op":"start_link", "parameters":{ "ip_address": myIP}}
reply = send(msg)
print reply
def send(msg):
s.sendall(json.dumps({ "message" : msg }))
r = s.recv(1024)
r = json.loads(r)
return r["message"]["parameters"]
def ping():
msg = {'transmission_id' : [2], 'op':'ping', 'parameters':{'text_in':'TESTING'}}
reply = send(msg)
print reply['text_out']
def move_wave_m(wavelength):
msg = {'transmission_id' : [3], 'op':'set_wave_m', 'parameters':{'wavelength': [wavelength],
'report':['finished']}}
reply = send(msg)
print reply
while True:
reply = s.recv(1024)
if not reply:
break
print reply
def poll_wave_m():
msg = {'transmission_id' : [4], 'op':'poll_wave_m'}
return send(msg)
connect()
ping()
s.settimeout(None)
move_wave_m(725.0000)
s.close()