2011-04-18 21 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