Gra*_*eme 5 android localserversocket localsocket
有没有人有关于例外"再试一次"的更多有用信息?
我正在使用LocalServerSocket和发送应用程序之间的位图LocalSocket:
输出:
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);
}
Run Code Online (Sandbox Code Playgroud)
输入:
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);
}
Run Code Online (Sandbox Code Playgroud)
[为了清晰起见,删除了try/catch等]
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)
Run Code Online (Sandbox Code Playgroud)
因为我找不到解决方案,所以我重新设计了这个。但是,在以不同的方式实现它时,我在原始代码中遇到了这些错误:
byte[] bytes = new byte[length];
fis.read(bytes);
Run Code Online (Sandbox Code Playgroud)
应该:
byte[] content = new byte[length];
int read = is.read(content);
while(read < content.length) {
read += is.read(content, read, content.length - read);
}
Run Code Online (Sandbox Code Playgroud)
因为它.read(byte[])不会一下子就把所有东西都吞掉。我认为它在这样做时会不断地发出声音并阻塞。
还有这样的:
socket.setSoTimeout(60);
Run Code Online (Sandbox Code Playgroud)
arg 以毫秒为单位而不是秒,因此应该是:
socket.setSoTimeout(60 * 1000);
Run Code Online (Sandbox Code Playgroud)
我仍然不知道上述错误命名的异常的原因,所以希望有人知道的话仍然会回答这个问题!
| 归档时间: |
|
| 查看次数: |
2604 次 |
| 最近记录: |