gpt4 book ai didi

java - 输入流无法正常工作

转载 作者:行者123 更新时间:2023-12-01 09:35:49 24 4
gpt4 key购买 nike

我是安卓初学者。我正在尝试在套接字上工作。但我的 InputStream 没有按预期读取数据。它在 j = inputStream.read(arrayOfByte, 0, i); 之后退出该方法,请帮助我。

public void readinputstreamforid(final String ip, final int port){
AsyncTask asyncTask = new AsyncTask() {

@Override
protected Object doInBackground(Object[] objects) {

try {
socket=new Socket(ip,port);
} catch (IOException e) {
e.printStackTrace();
}
final byte[] arrayOfByte = new byte[10000];

InputStream inputStream = null;
try {
inputStream = socket.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}

while (socket.isConnected()) {
int j = 0;
int i = arrayOfByte.length;
try {
j = inputStream.read(arrayOfByte, 0, i);
if (j == -1)
throw new IOException("not working");
if (j == 0)
continue;
} catch (IOException e) {
e.printStackTrace();
}
final String strData = new String(arrayOfByte, 0, j).replace("\r", "").replace("\n", "");
Log.d("hello","recieved: "+strData);

}
try {
IOUtils.write("!#@\n",socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
};

asyncTask.execute();
}

最佳答案

如果发生错误,您会记录它,但随后继续执行代码,可能会发生更多错误。当错误发生时,STOP循环并退出函数。当到达流末尾时,InputStream.read() 返回 -1。对于套接字来说,这意味着连接何时关闭。这并不是真正的错误情况,因此您不需要引发异常。只要打破循环即可。您可以将 InputStream 包装在 BufferedReader 内,这样您就可以使用其 readLine() 方法,而不是手动读取字节。

此外,您正尝试在套接字已断开连接之后写入套接字的 OutputStream 。那永远不会起作用。

尝试更多类似这样的事情:

public void readinputstreamforid(final String ip, final int port){
AsyncTask asyncTask = new AsyncTask() {

@Override
protected Object doInBackground(Object[] objects) {

try {
socket = new Socket(ip, port);

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
OutputDataStream out = socket.getOutputStream();

do {
String data = in.readLine();
if (data == null)
break;

Log.d("hello", data);
IOUtils.write("!#@\n", out, StandardCharsets.UTF_8);
}
while (true);

} catch (IOException e) {
e.printStackTrace();
}

return null;
}
};

asyncTask.execute();
}

关于java - 输入流无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38945195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com