有没有人有关于例外"再试一次"的更多有用信息?
我正在使用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 …Run Code Online (Sandbox Code Playgroud) 我建立了UDP连接并正在侦听端口(本地主机),并且我也尝试从本地主机发送Scapy数据包。由于某种原因,我的C代码实际上从未捕获过该数据包,但是我可以看到该数据包在Wireshark中显示的很好。自从我使用套接字以来已经有一段时间了,但是我是否必须设置一些特殊的套接字选项,或者为什么我能够看到Wireshark中的数据包很好,但不能看到C套接字呢?
注意:当我编写了相应的套接字代码以发送数据包(从本地主机)时,我能够成功捕获数据包,但是当从另一台计算机发送时,我仍然无法获得侦听代码来捕获数据包。
我发现了一个类似的问题,但是当我尝试使用它们的方法(使用UDP而不是TCP)时,我仍然无法通过netcat捕获Scapy数据包。
C代码(为简明起见,压缩)
int main() {
int sock, dataLen, inLen;
struct sockaddr_in inAddr;
short listen_port = 8080;
char buffer[2048];
if (sock = socket(AF_INET,SOCK_DGRAM,0) < 0) {
printf("ERROR: unable to establish socket\n");
return -1;
}
// zero out address structure
memset(&inAddr, 0, sizeof(inAddr));
inAddr.sin_family = AF_INET;
inAddr.sin_addr.s_addr = htonl(INADDR_ANY);
inAddr.sin_port = htons(listen_port);
if (bind(sock, (struct sockaddr*)&inAddr, sizeof(inAddr)) < 0) {
printf("ERROR: unable to bind\n");
return -1;
}
inLen = sizeof(inAddr);
printf("Now listening on port %d\n", listen_port);
while(1) { …Run Code Online (Sandbox Code Playgroud)