2014-12-04 39 views
0

我正在使用python创建一个服务器,并用Java(Android)创建一个客户端。我面临的问题是从一个到另一个正确地获取数据。Python服务器和Java客户端:奇怪的行为接收数据

我让Java客户端尝试这样一个登录:

SettingsManager settingsman = SettingsManager.getInstance(params[0]); 
       int port = Integer.parseInt(settingsman.getPort()); 
       String ip = settingsman.getIp(); 
       server = new Socket(ip, port); 
       input = new DataInputStream(server.getInputStream()); 
       output = new DataOutputStream(server.getOutputStream()); 
       output.writeChars(LOGIN_REQ); 
       output.writeChars(settingsman.getUserName()); 
       output.writeChars(settingsman.getPassword()); 
       String token = Integer.toString(input.read()); 
       //Check if the login has failed 
       if(token == "0"){ 
        token = null; 
       } 
       return token; 

而Python的服务器收到这样的:

opcode = c.recv(2) 
    opcode = opcode.decode('utf-8') 
    print("OPCODE:" + opcode + str(type(opcode))) 
    if(opcode == "0"): 
     "Login action" 
     print("STARTING TO RECV!") 
     login = c.recv(1024).decode('utf-8') 
     print("RECEIVED LOGIN: " + login) 
     password = c.recv(1024).decode('utf-8') 
     print("PASSWORD: " + password) 
     print("USERNAME: " + username) 
     setman = SettingsManager() 
     setuser = setman.seccam_user() 
     setpass = setman.seccam_password() 

     if login == setuser & password == setpass: 
      print("Login is good!") 
      """Generate random token and save it to the settings file""" 
    elif(opcode == "1"): 
     pass 
    else: 
     print("OTHER!") 

这是输出:

OPCODE:0<class 'str'> 
OTHER! 

尽管Opcode似乎是一个字符串并且是正确的值,但程序不会正确输入If语句

谁能告诉我我做错了什么?

谢谢

回答

0

好的,我解决了我的问题。在我的Java代码中使用WriteBytes工作得更好!

相关问题