来自UDP数据源的条件';我不能用PYTHON工作

来自UDP数据源的条件';我不能用PYTHON工作,python,udp,Python,Udp,我想用Python从UDP的数据中生成条件。 这是我的密码: import socket import atexit UDP_IP = "127.0.0.1" UDP_PORT = 8002 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind((UDP_IP, UDP_PORT)) print("listen to port: " + str(UDP_PORT)) while True: data, add

我想用Python从UDP的数据中生成条件。 这是我的密码:

import socket
import atexit
UDP_IP = "127.0.0.1"
UDP_PORT = 8002

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))
print("listen to port: " + str(UDP_PORT))
while True:
    data, addr = sock.recvfrom(1024)
    data = data.rsplit(",")
    data = data.pop(0)
    print(data)
    if data=='1':
        print("BOOL is TRUE")
“当数据==1时,应打印BOOL is true,但不会发生任何情况…”。。。
有什么线索吗?请提前感谢。

尝试替换此行:

data = data.pop(0)
为此:

data = data.pop(0).strip('\x00')
这将删除填充字符串的
NULL
s


或者,您可以查看填充值
NULL
的原因,并在服务器端进行修复。

现在您正在检查
数据是否等于
“1“
1
不同。一个是字符串,一个是数字。是否要检查它是否等于字符串?它是否执行过
打印(数据)
?如果是这样的话,你能尝试一下
print(“[”,data,“])
来确保没有空格或任何东西吗?@ryan:当我打印(“[…”,如你所说,它会给我:(“[”,“1\x00\x00”,“])或者当结果为0:(“[”,“0\x00\x00\x00”,“]))哎哟!这里有点丢了…顺便说一句-如果你没有使用Python 3,你应该使用
print
语句(即
print data
,而不是
print(data)
),除非你从将来导入
print\u函数。