私はクライアントとして動作し、LakeShore336温度コントローラ(サーバーとして動作しています)から温度の読み取り値を取得するTCP pythonスクリプトを作成しています。私は、クライアントからサーバーにコマンドを渡し、応答を出力する必要があります。コマンドが送信された後に出力が 'Spot 2'になりますが、s.recvが呼び出されたときにハングしています。 (Pythonの2.7)TCPサーバーの応答
Client.py
import socket
ip = '192.168.62.233'
port = 7777 # The same port as used by the server/machine
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))
print 'Spot 1'
s.send('KRDG? A[term]')
print 'Spot 2'
data = s.recv(4096)
print 'Spot 3'
s.close()
print 'Received', repr(data)
EDIT:最後に 私はちょうどので、ターミネータがあったことを
s.send('KRDG? A\r\n')
追加する必要がありました。助けてくれてありがとう
正しく、 'recv()'はブロッキング呼び出しです。サーバーが4096バイトまでの応答を送信するか、接続を閉じるまでブロックされます(それはそれよりも複雑ですが、それは単純な話です)。私はあなたが応答を送った後、サーバー上の接続を閉じるつもりはないと確信しています。 – grochmal