protected void createSockets() throws IOException { final String LOCAL_ADDR = "net.majorkernelpanic.streaming-"; for (int i=0;i<10;i++) { try { mSocketId = new Random().nextInt(); mLss = new LocalServerSocket(LOCAL_ADDR+mSocketId); break; } catch (IOException e1) {} } mReceiver = new LocalSocket(); mReceiver.connect( new LocalSocketAddress(LOCAL_ADDR+mSocketId)); mReceiver.setReceiveBufferSize(500000); mReceiver.setSoTimeout(3000); mSender = mLss.accept(); mSender.setSendBufferSize(500000); }
private Server(String packageName) { try { serverSocket = new LocalServerSocket(packageName); if (Log.isLoggable(Logging.LOG_TAG, Log.VERBOSE)) { Log.v(Logging.LOG_TAG, "Starting server socket listening for package " + packageName + " on " + serverSocket.getLocalSocketAddress()); } } catch (IOException e) { Log.e(Logging.LOG_TAG, "IO Error creating local socket at " + packageName, e); return; } startServer(); if (Log.isLoggable(Logging.LOG_TAG, Log.VERBOSE)) { Log.v(Logging.LOG_TAG, "Started server for package " + packageName); } }
@Nonnull private static LocalServerSocket bindToSocket(String address) throws IOException { int retries = MAX_BIND_RETRIES; IOException firstException = null; do { try { LogUtil.e("Trying to bind to @" + address); return new LocalServerSocket(address); } catch (BindException be) { LogUtil.e(be, "Binding error, sleep " + TIME_BETWEEN_BIND_RETRIES_MS + " ms..."); if (firstException == null) { firstException = be; } Util.sleepUninterruptibly(TIME_BETWEEN_BIND_RETRIES_MS); } } while (retries-- > 0); throw firstException; }
@Nonnull private static LocalServerSocket bindToSocket(String address) throws IOException { int retries = MAX_BIND_RETRIES; IOException firstException = null; do { try { if (LogUtil.isLoggable(Log.DEBUG)) { LogUtil.d("Trying to bind to @" + address); } return new LocalServerSocket(address); } catch (BindException be) { LogUtil.w(be, "Binding error, sleep " + TIME_BETWEEN_BIND_RETRIES_MS + " ms..."); if (firstException == null) { firstException = be; } Util.sleepUninterruptibly(TIME_BETWEEN_BIND_RETRIES_MS); } } while (retries-- > 0); throw firstException; }
public void init() { try { localLoop = new LocalServerSocket("videoserver"); localReceiver = new LocalSocket(); localReceiver.connect(localLoop.getLocalSocketAddress()); localReceiver.setReceiveBufferSize(LOCAL_BUFF_SIZE); localReceiver.setSendBufferSize(LOCAL_BUFF_SIZE); localSender = localLoop.accept(); localSender.setReceiveBufferSize(LOCAL_BUFF_SIZE); localSender.setSendBufferSize(LOCAL_BUFF_SIZE); Log.d(LOG_TAG, "Done: init()"); }catch(IOException e) { Log.e(LOG_TAG, "Error in initializing local socket: " + e); } }
/** * 私有构造方法 * 主要是实例化一个 LocalServerSocket * 然后调用 startServer() 方法 * * @param packageName packageName * @param application application */ private Server(@NonNull String packageName, @NonNull Application application) { mApplication = application; try { mServerSocket = new LocalServerSocket(packageName); if (Log.isLoggable(LOG_TAG, Log.VERBOSE)) { Log.v(LOG_TAG, "Starting server socket listening for package " + packageName + " on " + mServerSocket.getLocalSocketAddress()); } } catch (IOException e) { Log.e(LOG_TAG, "IO Error creating local socket at " + packageName, e); return; } startServer(); if (Log.isLoggable(LOG_TAG, Log.VERBOSE)) { Log.v(LOG_TAG, "Started server for package " + packageName); } }
@VisibleForTesting static FileDescriptorFactory create(String address, String... cmd) throws IOException { // must be created before the process final LocalServerSocket socket = new LocalServerSocket(address); try { final Process shell = new ProcessBuilder(cmd) .redirectErrorStream(true) .start(); final FileDescriptorFactory result = new FileDescriptorFactory(shell, socket); result.startServer(); return result; } catch (Throwable t) { shut(socket); throw t; } }
private Server(String packageName, Application application) { this.mApplication = application; try { this.mServerSocket = new LocalServerSocket(packageName); if (Log.isLoggable("InstantRun", 2)) { Log.v("InstantRun", "Starting server socket listening for package " + packageName + " on " + this.mServerSocket.getLocalSocketAddress()); } } catch (IOException e) { Log.e("InstantRun", "IO Error creating local socket at " + packageName, e); return; } startServer(); if (Log.isLoggable("InstantRun", 2)) { Log.v("InstantRun", "Started server for package " + packageName); } }
protected void createSockets() throws IOException { final String LOCAL_ADDR = "net.majorkernelpanic.streaming-"; for (int i=0;i<10;i++) { try { mSocketId = new Random().nextInt(); mLss = new LocalServerSocket(LOCAL_ADDR+mSocketId); break; } catch (IOException e1) {} } mReceiver = new LocalSocket(); mReceiver.connect( new LocalSocketAddress(LOCAL_ADDR+mSocketId)); mReceiver.setReceiveBufferSize(1000000); mReceiver.setSoTimeout(3000); mSender = mLss.accept(); mSender.setSendBufferSize(1000000); }
protected void createSockets() throws IOException { final String LOCAL_ADDR = "edu.ucsb.cs.capstone.letmypeoplecode.smartrover.streaming-"; for (int i=0;i<10;i++) { try { mSocketId = new Random().nextInt(); mLss = new LocalServerSocket(LOCAL_ADDR+mSocketId); break; } catch (IOException e1) {} } mReceiver = new LocalSocket(); mReceiver.connect( new LocalSocketAddress(LOCAL_ADDR+mSocketId)); mReceiver.setReceiveBufferSize(500000); mReceiver.setSoTimeout(3000); mSender = mLss.accept(); mSender.setSendBufferSize(500000); }
public LocalSocketEventReporter(String socketName, int timeoutInSec) { EventServer server1; try { LocalServerSocket socket = new LocalServerSocket(socketName); server1 = new EventServer(socket, timeoutInSec, TimeUnit.SECONDS); } catch (IOException e) { server1 = null; new RuntimeException("Unable to create server socket"); } this.server = server1; }
@Test public void sendSync_will_return_false_if_no_one_listens() throws Exception { String socketName = "junitevent"; LocalServerSocket socket = new LocalServerSocket(socketName); EventServer server = new EventServer(socket, 10, TimeUnit.MILLISECONDS); boolean b = server.sendSync(Event.create("id", EventType.started, "testName", "className", "1")); server.stop(); assertFalse("sendSync without a listener should return false", b); }
@Test public void sendSync_will_return_true_if_some_one_listens() throws Exception { String socketName = "junitevent2"; LocalServerSocket socket = new LocalServerSocket(socketName); EventServer server = new EventServer(socket, 10, TimeUnit.SECONDS); TestEventClient client = new TestEventClient(socketName); boolean b = server.sendSync(Event.create("id", EventType.started, "testName", "className", "1")); server.stop(); client.stop(); assertTrue("sendSync with a listener should return true", b); }
public LocalProxySocket(Socket original) throws TorException { super(); try { // Prepare LocalSocket which will be used to trick the SSLSocket (or any other one) localSocketSend = new LocalSocket(); // Local socket name String socketName = "local" + UUID.randomUUID(); localServerSocket = new LocalServerSocket(socketName); localSocketSend.connect(new LocalSocketAddress(socketName)); localSocketRecv = localServerSocket.accept(); this.originalSocket = original; // Create 2 Threads which are taking care of the communication between the LocalSocket and the original Socket LocalProxyWorker lpw1 = new LocalProxyWorker(localSocketRecv.getInputStream(), originalSocket.getOutputStream(), "to"); LocalProxyWorker lpw2 = new LocalProxyWorker(originalSocket.getInputStream(), localSocketRecv.getOutputStream(), "from"); Thread t1 = new Thread(lpw1); Thread t2 = new Thread(lpw2); t1.start(); t2.start(); // Prepare this Socket to contain the FileDescriptor of the LocalSocket FileDescriptor fd = localSocketSend.getFileDescriptor(); SocketImpl socketImpl = (SocketImpl) Class.forName("java.net.PlainSocketImpl").getConstructor(FileDescriptor.class).newInstance(fd); Field implField = this.getClass().getSuperclass().getDeclaredField("impl"); implField.setAccessible(true); implField.set(this, socketImpl); } catch (Exception e) { LOG.debug("Got Exception while trying to create LocalProxySocket", e); throw new TorException("could not create LocalProxySocket", e); } }
protected void createSockets() throws IOException { if (sPipeApi == PIPE_API_LS) { final String LOCAL_ADDR = "com.galuu.ev3videocontrol.streaming-"; for (int i=0;i<10;i++) { try { mSocketId = new Random().nextInt(); mLss = new LocalServerSocket(LOCAL_ADDR+mSocketId); break; } catch (IOException e1) {} } mReceiver = new LocalSocket(); mReceiver.connect( new LocalSocketAddress(LOCAL_ADDR+mSocketId)); mReceiver.setReceiveBufferSize(500000); mReceiver.setSoTimeout(3000); mSender = mLss.accept(); mSender.setSendBufferSize(500000); } else { Log.e(TAG, "parcelFileDescriptors createPipe version = Lollipop"); mParcelFileDescriptors = ParcelFileDescriptor.createPipe(); mParcelRead = new ParcelFileDescriptor(mParcelFileDescriptors[0]); mParcelWrite = new ParcelFileDescriptor(mParcelFileDescriptors[1]); } }
/** * Create socket to be able to read sensor data */ private void openSocket() throws AccessorySensorException { try { // Open socket mLocalServerSocket = new LocalServerSocket(mSocketName); // Stop server listening thread if running if (mServerThread != null) { mServerThread.interrupt(); mServerThread = null; } // Start server listening thread mServerThread = new ServerThread(new Handler() { public void handleMessage(Message msg) { AccessorySensorEvent accessorySensorEvent = (AccessorySensorEvent)msg.obj; if (accessorySensorEvent != null && mListener != null) { mListener.onSensorEvent(accessorySensorEvent); } } }); mServerThread.start(); // Send intent to Aha sendSensorStartListeningIntent(); } catch (IOException e) { if (Dbg.DEBUG) { Dbg.e(e.getMessage(), e); } throw new AccessorySensorException(e.getMessage()); } }
/** * Create socket to be able to read sensor data */ private void openSocket() throws AccessorySensorException { try { // Open socket mLocalServerSocket = new LocalServerSocket(mSocketName); // Stop server listening thread if running if (mServerThread != null) { mServerThread.interrupt(); mServerThread = null; } // Start server listening thread mServerThread = new ServerThread(new Handler() { @Override public void handleMessage(Message msg) { AccessorySensorEvent accessorySensorEvent = (AccessorySensorEvent)msg.obj; if (accessorySensorEvent != null && mListener != null) { mListener.onSensorEvent(accessorySensorEvent); } } }); mServerThread.start(); // Send intent to Aha sendSensorStartListeningIntent(); } catch (IOException e) { if (Dbg.DEBUG) { Dbg.e(e.getMessage(), e); } throw new AccessorySensorException(e.getMessage()); } }
@Test public void sendSync_will_return_false_if_no_one_listens() throws Exception { String socketName = "junitevent"; LocalServerSocket socket = new LocalServerSocket(socketName); EventServer server = new EventServer(socket, 10, TimeUnit.MILLISECONDS); boolean b = server.sendSync(Event.create("id", EventType.started, "testName", "className", 1)); server.stop(); assertFalse("sendSync without a listener should return false", b); }
@Test public void sendSync_will_return_true_if_some_one_listens() throws Exception { String socketName = "junitevent2"; LocalServerSocket socket = new LocalServerSocket(socketName); EventServer server = new EventServer(socket, 10, TimeUnit.SECONDS); TestEventClient client = new TestEventClient(socketName); boolean b = server.sendSync(Event.create("id", EventType.started, "testName", "className", 1)); server.stop(); client.stop(); assertTrue("sendSync with a listener should return true", b); }
protected void createSockets() throws IOException { if (sPipeApi == PIPE_API_LS) { final String LOCAL_ADDR = "net.majorkernelpanic.streaming-"; for (int i=0;i<10;i++) { try { mSocketId = new Random().nextInt(); mLss = new LocalServerSocket(LOCAL_ADDR+mSocketId); break; } catch (IOException e1) {} } mReceiver = new LocalSocket(); mReceiver.connect( new LocalSocketAddress(LOCAL_ADDR+mSocketId)); mReceiver.setReceiveBufferSize(500000); mReceiver.setSoTimeout(3000); mSender = mLss.accept(); mSender.setSendBufferSize(500000); } else { Log.e(TAG, "parcelFileDescriptors createPipe version = Lollipop"); mParcelFileDescriptors = ParcelFileDescriptor.createPipe(); mParcelRead = new ParcelFileDescriptor(mParcelFileDescriptors[0]); mParcelWrite = new ParcelFileDescriptor(mParcelFileDescriptors[1]); } }
/** * Stops the listener, and closes the socket. * * @return true if connection has been stopped in this call, or false if it * has been already stopped when this method has been called. */ public boolean disconnect() { // This is the only place in this class where we will null the // socket object. Since this method can be called concurrently from // different threads, lets do this under the lock. LocalServerSocket socket; synchronized (this) { socket = mServerSocket; mServerSocket = null; } if (socket != null) { if (DEBUG) Log.d(TAG, "SdkControllerConnection is stopping I/O looper..."); // Stop accepting new connections. wakeIOLooper(socket); try { socket.close(); } catch (Exception e) { } // Close all the pending sockets, and clear pending socket list. if (DEBUG) Log.d(TAG, "SdkControllerConnection is closing pending sockets..."); for (Socket pending_socket : mPendingSockets) { pending_socket.close(); } mPendingSockets.clear(); // Disconnect all the emualtors. if (DEBUG) Log.d(TAG, "SdkControllerConnection is disconnecting channels..."); for (Channel channel : mChannels) { if (channel.disconnect()) { channel.onEmulatorDisconnected(); } } if (DEBUG) Log.d(TAG, "SdkControllerConnection is disconnected."); } return socket != null; }
/** * Wakes I/O looper waiting on connection with the emulator. * * @param socket Server socket waiting on connection. */ private void wakeIOLooper(LocalServerSocket socket) { // We wake the looper by connecting to the socket. LocalSocket waker = new LocalSocket(); try { waker.connect(socket.getLocalSocketAddress()); } catch (IOException e) { Loge("Exception " + e + " in SdkControllerConnection while waking up the I/O looper."); } }
/** * Loops on the local socket, handling emulator connection attempts. */ private void runIOLooper() { if (DEBUG) Log.d(TAG, "In SdkControllerConnection I/O looper."); do { try { // Create non-blocking server socket that would listen for connections, // and bind it to the given port on the local host. mServerSocket = new LocalServerSocket(SDK_CONTROLLER_PORT); LocalServerSocket socket = mServerSocket; while (socket != null) { final LocalSocket sk = socket.accept(); if (mServerSocket != null) { onAccept(sk); } else { break; } socket = mServerSocket; } } catch (IOException e) { Loge("Exception " + e + "SdkControllerConnection I/O looper."); } if (DEBUG) Log.d(TAG, "Exiting SdkControllerConnection I/O looper."); // If we're exiting the internal loop for reasons other than an explicit // disconnect request, we should reconnect again. } while (disconnect()); }
/** * Creates a thread which can read from the socket. * * @param handler The handler to post messages on. */ public ServerThread(final Handler handler, final LocalServerSocket localServerSocket, final int index) { mHandler = handler; mLocalServerSocket = localServerSocket; mIndex = index; }
private static void shut(LocalServerSocket sock) { try { if (sock != null) sock.close(); } catch (IOException e) { logException("Failed to close server socket", e); } }
protected void createSockets() throws IOException { if (sPipeApi == PIPE_API_LS) { final String LOCAL_ADDR = "com.jjcamera.apps.iosched.streaming-"; for (int i=0;i<10;i++) { try { mSocketId = new Random().nextInt(); mLss = new LocalServerSocket(LOCAL_ADDR+mSocketId); break; } catch (IOException e1) {} } mReceiver = new LocalSocket(); mReceiver.connect( new LocalSocketAddress(LOCAL_ADDR+mSocketId)); mReceiver.setReceiveBufferSize(500000); mReceiver.setSoTimeout(3000); mSender = mLss.accept(); mSender.setSendBufferSize(500000); } else { Log.e(TAG, "parcelFileDescriptors createPipe version = Lollipop"); mParcelFileDescriptors = ParcelFileDescriptor.createPipe(); mParcelRead = new ParcelFileDescriptor(mParcelFileDescriptors[0]); mParcelWrite = new ParcelFileDescriptor(mParcelFileDescriptors[1]); } }
public void run() { try { for (; ; ) { LocalServerSocket serverSocket = Server.this.mServerSocket; if (serverSocket == null) { break; } LocalSocket socket = serverSocket.accept(); if (Log.isLoggable("InstantRun", 2)) { Log.v("InstantRun", "Received connection from IDE: spawning connection thread"); } Server.SocketServerReplyThread socketServerReplyThread = new Server.SocketServerReplyThread(socket); socketServerReplyThread.run(); if (Server.sWrongTokenCount > 50) { if (Log.isLoggable("InstantRun", 2)) { Log.v("InstantRun", "Stopping server: too many wrong token connections"); } Server.this.mServerSocket.close(); break; } } } catch (Throwable e) { if (Log.isLoggable("InstantRun", 2)) { Log.v("InstantRun", "Fatal error accepting connection on local socket", e); } } }