我刚开始在python上进行TCP服务器和客户端编程。但是其中一个if语句不起作用,它没有任何意义:
while (1):
data = s.recv(1024)
if data == 'finish':
break
print data
print 'Finish'
有时最后一条车道会打印完成'而不是完成'它不能退出循环。这应该永远不会发生,因为打印数据'如果data =' finish'则跳过语句。有人能告诉我为什么会这样吗?
答案 0 :(得分:3)
仅仅因为您在一次通话中将字节发送到send
并不意味着您将在一次致电recv
时收到这些字节。他们可能会到更小或更大的群体。例如。也许你发送:
c.send('one')
c.send('two')
c.send('three')
c.send('finish')
但你收到了
s.recv(1024) -> 'onetwothreefinish'
或许你收到了
s.receive(1024) -> 'one'
s.receive(1024) -> 'two'
s.receive(1024) -> 'three'
s.receive(1024) -> 'fin'
s.receive(1024) -> 'ish'
答案 1 :(得分:1)
您可以与data.lower
进行比较,以确保所有大写字母都更改为小写字母,同时更改while循环并删除多余的大括号
while True:
data = s.recv(1024)
if not data:
break
print data
print 'Finish
答案 2 :(得分:0)
比较区分大小写。在if语句中使用data.lower()