@Override public void close() { try { if (localSocket.getFileDescriptor() != null) { // close the streams to interrupt pending read and writes localSocket.shutdownInput(); localSocket.shutdownOutput(); } localSocket.close(); } catch (IOException e) { // what could we do? throw new RuntimeException(e); } } }
mSocket.getFileDescriptor();
public boolean openManagementInterface(@NonNull Context c) { // Could take a while to open connection int tries = 8; String socketName = (c.getCacheDir().getAbsolutePath() + "/" + "mgmtsocket"); // The mServerSocketLocal is transferred to the LocalServerSocket, ignore warning LocalSocket mServerSocketLocal = new LocalSocket(); while (tries > 0 && !mServerSocketLocal.isBound()) { try { mServerSocketLocal.bind(new LocalSocketAddress(socketName, LocalSocketAddress.Namespace.FILESYSTEM)); } catch (IOException e) { // wait 300 ms before retrying try { Thread.sleep(300); } catch (InterruptedException ignored) { } } tries--; } try { mServerSocket = new LocalServerSocket(mServerSocketLocal.getFileDescriptor()); return true; } catch (IOException e) { VpnStatus.logException(e); } return false; }
"-" + mFriendlyName + "-" + mThreadId.incrementAndGet(); LogUtil.d("WorkerThread: " + socket.getFileDescriptor().toString() + "/" + name); t.setName(name); t.setDaemon(true);
t2.start(); FileDescriptor fd = localSocketSend.getFileDescriptor(); SocketImpl socketImpl = (SocketImpl) Class.forName("java.net.PlainSocketImpl").getConstructor(FileDescriptor.class).newInstance(fd); Field implField = this.getClass().getSuperclass().getDeclaredField("impl");
ls = new LocalSocket(); ls.bind(new LocalSocketAddress(socketName, LocalSocketAddress.Namespace.FILESYSTEM)); serverSocket = new LocalServerSocket(ls.getFileDescriptor()); socketName = "unix:" + socketName; log(socketName);
// Create a MediaRecorder MediaRecorder mr = new MediaRecorder(); // (Initialize mr as usual) // Create a LocalServerSocket LocalServerSocket lss = new LocalServerSocket("foobar"); // Connect both end of this socket LocalSocket sender = lss.accept(); LocalSocket receiver = new LocalSocket(); receiver.connect(new LocalSocketAddress("foobar")); // Set the output of the MediaRecorder to the sender socket file descriptor mr.setOutputFile(sender.getFileDescriptor()); // Start the video recording: mr.start(); // Launch a background thread that will loop, // reading from the receiver socket, // and creating a RTP packet out of read data. RtpSocket rtpSocket = new RtpSocket(); InputStream in = receiver.getInputStream(); while(true) { fis.read(buffer, ...); // Here some data manipulation on the received buffer ... RtpPacket rtp = new RtpPacket(buffer, ...); rtpSocket.send(rtpPacket); }
fd = mParcelWrite.getFileDescriptor(); } else { fd = mSender.getFileDescriptor();
mMediaRecorder.setOutputFile(mSender.getFileDescriptor());
fd = mParcelWrite.getFileDescriptor(); } else { fd = mSender.getFileDescriptor();
fd = mParcelWrite.getFileDescriptor(); } else { fd = mSender.getFileDescriptor();
setOutputFile(sender.getFileDescriptor());