在socket上收到的字符串在python中不能比较

时间:2014-11-11 14:26:38

标签: java string sockets python-3.x compare

我正在尝试比较我在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应用程序中的按钮时。

任何人都知道如何解决这个问题,所以它进入正确的陈述而不进入最后一个?

干杯。

2 个答案:

答案 0 :(得分:2)

您可能在线上有换行符,因此您应该与"1\n".strip()进行比较

答案 1 :(得分:0)

我有同样的问题。我使用下面的代码,发现我的字符串末尾有\x00,在打印/转换或任何其他方法时没有显示。

tmp = returnmsg.split()
print tmp