我正在尝试在python中创建套接字连接。我需要监听服务器,直到它发送消息,因此我需要使用while True
。
客户端:
import RPi.GPIO as GPIO
import time
import socket
GPIO.setmode(GPIO.BOARD)
pinLDR = 7
pinLED = 11
touch = False
sock = socket.socket()
sock.connect(('192.168.1.67', 9092))
while True:
print sock.recv(256)
def rc_time ():
count = 0
GPIO.setup(pinLDR, GPIO.OUT)
GPIO.output(pinLDR, GPIO.LOW)
time.sleep(0.1)
GPIO.setup(pinLDR, GPIO.IN)
while (GPIO.input(pinLDR) == GPIO.LOW):
count += 1
return count
def led(lh):
GPIO.setup(pinLED, GPIO.OUT)
if lh == 1:
GPIO.output(pinLED, GPIO.HIGH)
else:
GPIO.output(pinLED, GPIO.LOW)
try:
while True:
print(str(rc_time()))
if rc_time() > 5000:
if touch == False:
print "triggered"
sock.send("triggered")
touch = True
else:
if touch == True:
sock.send("nottriggered")
print "nottriggered"
touch = False
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()
sock.close()
但我有问题。即使服务器发送消息,也不会打印任何内容。首先while True
之后的整个代码不起作用
答案 0 :(得分:1)
更新:问题中代码的问题在于它在顶部有一个无限循环。下面的代码都不会执行:
while True:
print sock.recv(256)
(显然这个特定的服务器在收到消息之前不会发送消息,所以它永远不会发送任何消息。)
这是一个简单的工作示例。如果这没有帮助,您需要在问题中提供更多背景信息。
这是客户:
import socket
s = socket.socket()
s.connect(('localhost', 12345))
while True:
print s.recv(256)
对应的服务器代码:
import socket
import time
s = socket.socket()
s.bind(('', 12345))
s.listen(0)
conn, addr = s.accept()
while True:
conn.send("Hello")
time.sleep(10)