2011-04-18 24 views
6
s=new Scanner(new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream()))); 

     while(s.hasNext()){ 
      System.out.println("Am intrat in bucla s:"); 
      longitude=Integer.parseInt(s.next()); 
      System.out.println("Valoare longitudine:"+longitude); 
      latitude=Integer.parseInt(s.next()); 
      System.out.println(latitude); 

我使用上面的代碼從客戶端服務器連接中讀取一些數據;這是服務器端。在掃描儀中讀取數據並在此之後嘗試顯示它,但是當我看到在logcat的我什麼都沒有顯示,但此異常:BufferedReader的使用錯誤

04-18 00:07:56.138:信息/全局(295): 在 BufferedReader類的構造函數使用默認的緩衝區大小。如果需要8k-char 緩衝區,則 最好是明確的。

我的客戶端和服務器都在android上!有沒有人知道我在做什麼錯了?

這是我讀出的數據,我把經緯度,我認爲是分隔的空格,奇怪的是,有時工作:

 Cursor c=db.getAllData(); 

      if(c.moveToFirst()) 
      { 
       do{ 

        longitude=Integer.parseInt(c.getString(1)); 
        out.println(longitude); 
        latitude=Integer.parseInt(c.getString(2)); 
        out.println(latitude); 

       }while(c.moveToNext()); 

      } 

回答

1

是您的數據空格分隔?如果沒有,您需要爲掃描儀指定分隔符。

您是否有一些您沒有顯示的異常處理代碼...例如如果parseInt失敗,隱藏NumberFormatException?

當你調試這個問題(除非你可以附加一個調試器),你可以在登錄時你接受新的客戶端連接,並且在進入和退出你的工作線程像點的消息。這可能有助於您瞭解是否在您認爲自己正在接收數據時掃描數據。

+0

我編輯了我的問題與我如何發送數據和空格分隔:) – adrian 2011-04-18 12:34:40

+0

看這裏,是我的整個代碼在WorkerRunnable我讀這個數據:http://stackoverflow.com/questions/5701674/how-to-verify-multithreading-server-in-android – adrian 2011-04-18 12:38:11

+0

你看過代碼了嗎?我已經使用了消息,並且在掃描數據之前使用了一個消息......並且它顯示在logcatr ,但數據本身不顯示......我真的不知道什麼是錯的,我沒有人來幫助我:)... Thx – adrian 2011-04-18 12:57:50

3

該消息似乎是BufferedReader構造。

首先,我不知道你在做什麼「錯誤」的,因爲你是說,代碼工作預期,該消息是「INFO」,而不是「錯誤」,甚至「警告」。

其次,如果你看一下BufferedReader構造函數,你會看到:

的BufferedReader(讀者中,INT大小) 構造一個新的BufferedReader,提供與緩衝區的大小字符。

http://developer.android.com/reference/java/io/BufferedReader.html

使用該構造,而不是你不應該看到該消息。

順便說一句,在logcat是全力輸出,部分線路比其他人更重要。


使用Log.d而不是System.out.println()。關於System.outhttp://developer.android.com/guide/developing/tools/adb.html

查看輸出和錯誤

缺省情況下,Android系統發送 stdout和stderr(System.out和 System.err的)輸出到/ dev/null的。在運行Dalvik VM的 進程中,您可以將 的輸出複製到 的輸出到日誌文件中。在這種 情況下,系統使用日誌標籤標準輸出 和標準錯誤,都與優先級一寫郵件 到日誌

若要將這樣的輸出,你 停止正在運行的模擬器/設備 實例然後使用命令setprop啓用 輸出的重定向shell 。這裏是你 如何做到這一點:

$亞行外殼停止$亞行外殼setprop log.redirect,標準輸入輸出真正的$亞行外殼 開始

系統保留此設置,直到 您終止模擬器/設備 實例。要將該設置作爲模擬器/設備 實例上的默認設置 ,可以在設備上添加一個條目到 /data/local.prop。

+0

我想看到我的數據顯示,消息不是一個問題:)))..謝謝你:) – adrian 2011-04-18 12:41:31

+0

而且,代碼不能在預期的工作 - 它不會在logcat中顯示任何數據!!!我說它工作正常......不,它不否則我不會在這裏爲某人祈禱o來告訴我我做錯了什麼:) – adrian 2011-04-18 12:43:14

+0

@adrian檢查更新的答案 – Aleadam 2011-04-18 12:57:00