Почему я получаю ноль в моем выводе? - PullRequest
0 голосов
/ 03 декабря 2010

Я хочу отправить сообщение на мой компьютер со своего телефона по протоколу TCP. Мой компьютер - это сервер, а мой телефон - клиент. Я могу отправить сообщение со своего телефона на мой компьютер, но на выходе я получаю нулевые символы ..

Я вставляю свои коды ниже ;;

Клиент ::

public void startApp () { пытаться { // установить сокет соединение с удаленным сервером 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) {}
}

}

Мой сервер:

публичный класс Main {

/**
 * @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);
  }

}

}

Мой вывод для сервера ;;

Сервер ответил
USER говорит NULL H Пользователь говорит ноль Н ноль Пользователь говорит ноль Н ноль е и т. д.

Я не должен получить этого нулевого персонажа, почему я его получаю ?? Другое дело, мой сервер пишет в поток, но клиент не может получить это, почему это так? Нужно ли для этого использовать отдельный поток?

Спасибо в adv

1 Ответ

1 голос
/ 04 декабря 2010

Я думаю, что это не ваш реальный код, и что ваш реальный код инициализировал str в ноль.

...