2014-12-04 61 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工作得更好!

相關問題