我分两步将数据发送到服务器: 1) 我将使用 byte[4] 发送的内容的长度 2)数据。
服务器监听数据的确切长度(先发送)然后回复。
所以我监听InputStream并尝试获取数据。
我的问题: 无论我在做什么,我只得到我发送的流,但服务器肯定会发送一个新字符串。
看来我不能等待 -1(字符串结尾),因为程序会超时,并且我确信服务器不会发送类似的内容。
因此,我使用 inputStream.available() 来查找缓冲区中剩余多少字节。
一旦我在读取所有数据后发送 inputStream.read() ,它将因“网络空闲超时”而超时。
但我需要监听 inputStream 以确保我没有丢失信息。
为什么我只收到自己发送的信息,而不收到服务器发送的信息? 我如何监听新项目的连接?
这是我的代码:
private void sendData (byte[] sendBytes){
try {
os.write(sendBytes);
os.flush();
} catch (IOException ex) {
}
}
请帮忙 总谐波失真
最佳答案
这是您通常从阅读器读取所有数据的方式(直到另一端关闭):
//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);
}
//该行上的数据将包含从服务器接收到的所有代码
关于Java - InputStream - 测试输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6163702/