2011-05-28 43 views
0

我通过两个步骤将数据发送到服务器: 1)我将使用字节发送的数据长度[4] 2)数据。Java - InputStream - 输入测试

服务器侦听数据的确切长度(先发货),然后回复。

所以我听InputStream并尝试获取数据。

我的问题: 无论我在做什么,我只得到我发送的流,但服务器明确地发送一个新的字符串。

看来我不能等待-1(字符串的末尾),因为程序会超时,并且我确信服务器不会发送任何内容。

因此,我正在使用inputStream.available()来查找缓冲区中剩余的字节数。

一旦我在读完所有数据后发送inputStream.read(),它将会以“网络空闲超时”超时。

但我需要听取inputStream以确保我不会丢失信息。

为什么我只接收我发送的信息,而不是服务器发送的信息? 如何收听新项目的连接?

这里是我的代码:

private void sendData (byte[] sendBytes){ 
     try { 
      os.write(sendBytes); 
      os.flush(); 
     } catch (IOException ex) { 
     } 
    } 

请帮 THD

+1

我不明白你想要做什么,但使用is.available()不正确。服务器在做什么?客户在做什么?它是什么类型的服务器? – Kaj 2011-05-28 18:52:21

+0

我想要做什么: 从服务器接收数据。 客户端发送数据,服务器接收它们(正确测试服务器端的人员)。 服务器发送数据,但客户端不读取正确的数据,但只读取客户端发送之前的字符串,一旦服务器发送了某些内容(不同)。 我不知道它是什么样的服务器,我不能在星期一之前问服务器的家伙。 – TDH 2011-05-28 18:58:43

+0

我可以看到我收到的数据: inputStream.parent.Inherited.buf.0-99 iStreams设置为1,connectionOpen为true 我可以发布的任何其他内容,这会有所帮助吗? – TDH 2011-05-28 19:01:55

回答

1

这就是你平时阅读器读取的所有数据(至另一端闭合):

//BufferedReader is 
StringBuilder data = new StringBuilder(); 
char[] buffer = new char[1024 * 32]; 
int len = 0; 
while ((len = is.read(buffer)) != -1) { 
    data.append(buffer, 0, len); 
} 

//data will on this line contain all code received from the server

+0

StringBuilder在我的Java中不可用。我用StringBuffer替换它。 is.read(buffer)不可用。最后,等待-1让我暂停。 – TDH 2011-05-28 19:23:02

+0

你的Java?你在写什么? – Kaj 2011-05-28 19:39:08

+0

MIDP(Mobility) – TDH 2011-05-28 19:45:17