2010-12-03 4 views
0

Je veux envoyer un message à mon ordinateur à partir de mon téléphone en utilisant TCP..Mon ordinateur est le serveur et mon téléphone est le client. Je suis capable d'envoyer un message de mon téléphone à mon ordinateur mais dans la sortie, j'obtiens des caractères nuls ..Pourquoi je reçois null dans ma sortie?

Je colle mes codes ci-dessous ;;

Client ::

startApp public void() {try { // établir une connexion avec le serveur distant socket StreamConnection = (StreamConnection) Connector.open (connectString);

// create DataOuputStream on top of the socket connection 
    outputStream = streamConnection.openOutputStream(); 
    dataOutputStream = new DataOutputStream(outputStream); 

    // send the HTTP request 
    dataOutputStream.writeChars("Hello"); 
    dataOutputStream.flush(); 

    // create DataInputStream on top of the socket connection 
    inputStream = streamConnection.openInputStream(); 
    dataInputStream = new DataInputStream(inputStream); 

    // retrieve the contents of the requested page from Web server 
    String test=""; 
    int inputChar; 
    System.out.println("Entering read..........."); 
    while ((inputChar = dataInputStream.read()) != -1) { 
    // test=test+((char)inputShar); 
    results.append((char) inputChar); 
    } 
    System.out.println("Leaving read..........."); 
    // display the page contents on the phone screen 
    //System.out.println(" Result are "+results.toString()); 
    System.out.println(" "); 
    resultField = new StringItem(null, results.toString()); 
    System.out.println("Client says "+resultField); 
    resultScreen.append(resultField); 
    myDisplay.setCurrent(resultScreen); 

} catch (IOException e) { 
    System.err.println("Exception caught:" + e); 
} finally { 
    // free up I/O streams and close the socket connection 
    try { 
    if (dataInputStream != null) 
     dataInputStream.close(); 
    } catch (Exception ignored) {} 
    try { 
    if (dataOutputStream != null) 
     dataOutputStream.close(); 
    } catch (Exception ignored) {} 
    try { 
    if (outputStream != null) 
     outputStream.close(); 
    } catch (Exception ignored) {} 
    try { 
    if (inputStream != null) 
     inputStream.close(); 
    } catch (Exception ignored) {} 
    try { 
    if (streamConnection != null) 
     streamConnection.close(); 
    } catch (Exception ignored) {} 
} 

} 

Mon serveur:

public class principal {

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    // TODO code application logic here 
    try{ 
     ServerSocket sck=new ServerSocket(880); 
     Socket client=sck.accept(); 
     InputStream inp= client.getInputStream(); 
     int i; 
     OutputStream out=client.getOutputStream(); 
     out.write("Testing ".getBytes()); 
     System.out.println("Server has responded   "); 
     String str=""; 
     while((i=inp.read())!=-1){ 

      str=str+((char) i); 
      System.out.println("USer says "+ str); 
     } 

    } 
    catch(Exception e){ 
     System.out.println("Error "+e); 
    } 

} 

}

Ma sortie pour le serveur ;;

serveur a répondu
L'utilisateur dit nulle H L'utilisateur dit null H null L'utilisateur dit null null H e etc etc

Je ne suis pas censé obtenir ce caractère nul, pourquoi je reçois ce ?? Autre chose, mon serveur écrit dans le flux mais le client n'est pas en mesure de recevoir cela, pourquoi est-ce que je dois utiliser un thread séparé pour cela?

Merci à adv

Répondre

1

Je suppose que ce n'est pas votre code réel, et que votre code réel initialisé str à null.

+0

Je n'ai pas initialisé quoi que ce soit à null, mais il me donne null ... –

+0

Vous devez avoir fait. Le code que vous avez publié ne se comporte pas comme vous le décrivez. La seule façon dont str peut contenir le texte null est si vous l'avez mis là, ou si elle était initialement nulle. – EJP

Questions connexes