Czy ktoś ma więcej przydatnych informacji na temat wyjątku "Spróbuj ponownie"?"Wyjątek IOException: spróbuj ponownie" podczas korzystania z LocalServerSocket
wyślę bitmapy między aplikacjami za pomocą LocalServerSocket
i LocalSocket
:
wyjściowa:
socket = new LocalSocket();
socket.connect(new LocalSocketAddress(SOCKET_NAME));
fos = new DataOutputStream(socket.getOutputStream());
...
public void onEvent() {
fos.writeInt(width);
fos.writeInt(height);
fos.writeInt(newBuffer.length);
fos.write(newBuffer);
}
Wejście:
server = new LocalServerSocket(SOCKET_NAME);
socket = server.accept();
socket.setSoTimeout(60);
while(true) {
int width = fis.readInt(); // IO Exception being thrown here
int height = fis.readInt();
int length = fis.readInt();
byte[] bytes = new byte[length];
fis.read(bytes);
}
[try/catch itp usuniętymi dla jasności]
04-18 09:19:11.664: W/System.err(1268): java.io.IOException: Try again
04-18 09:19:11.664: W/System.err(1268): at android.net.LocalSocketImpl.readba_native(Native Method)
04-18 09:19:11.664: W/System.err(1268): at android.net.LocalSocketImpl.access$400(LocalSocketImpl.java:29)
04-18 09:19:11.664: W/System.err(1268): at android.net.LocalSocketImpl$SocketInputStream.read(LocalSocketImpl.java:92)
04-18 09:19:11.664: W/System.err(1268): at libcore.io.Streams.readFully(Streams.java:81)
04-18 09:19:11.664: W/System.err(1268): at java.io.DataInputStream.readInt(DataInputStream.java:124)
04-18 09:19:11.664: W/System.err(1268): at com.test.util.BitmapSendingUtils$BitmapReceiver$1.run(BitmapSendingUtils.java:105)
Jego rzucanie na konkretną operację blokowania. Nie wygląda na to, że powyższa odpowiedź ma zastosowanie. Cóż, nie powinno tak być. – Graeme
Ah, rozumiem. Czy to błąd w LocalSocketImpl? Co się stanie, jeśli potraktujesz błąd jako EAGAIN i spróbujesz ponownie? –
Proszę dać znać, jak rozwiązałeś ten problem –