我正在尝试比较我在Java中从python发送的套接字上收到的字符串。 它无法比较。如果我在IDLE中运行一个简单的If语句,它就可以工作。但是当我尝试接收一个字符串并进行比较时。
用于发送字符串的Java代码:
String nummer = "1";
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())), true);
out.println(nummer);
Python代码:
while True:
# establish a connection
clientsocket,addr = serversocket.accept()
print("Got a connection from %s" % str(addr))
returnmsg = clientsocket.recv(1024)
command = str(returnmsg.decode('utf-8'))
print(command)
if command == 1:
time.sleep(1)
print('open')
time.sleep(1)
if command == '0':
time.sleep(1)
print('close')
time.sleep(1)
if command != '1' and command != '0':
print('something else')
clientsocket.close()
print('Socket closed')
python控制台上显示的输出如下:
Got a connection from ('192.168.0.101', 50148)
1
something else
Socket closed
它总是在最后一个声明中结束。我尝试比较像:
if command == '1':
if command == "1":
它应该做什么,在java(android)我有3个按钮。 2个按钮只发送1或0(字符串)。另一个发送一个包含更多字符的字符串。字符串本身并不重要。
它总是在最后一个声明中结束。它不应该做什么。它甚至没有输入正确的陈述。因为它应该打印"打开"当我点击我的Android应用程序中的按钮时。
任何人都知道如何解决这个问题,所以它进入正确的陈述而不进入最后一个?
干杯。
答案 0 :(得分:2)
您可能在线上有换行符,因此您应该与"1\n"
或.strip()
进行比较
答案 1 :(得分:0)
我有同样的问题。我使用下面的代码,发现我的字符串末尾有\x00
,在打印/转换或任何其他方法时没有显示。
tmp = returnmsg.split()
print tmp