Java Code Examples for java.net.Socket#setKeepAlive()

The following examples show how to use java.net.Socket#setKeepAlive() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ContainerExecWSHandler.java    From java-docker-exec with MIT License 6 votes vote down vote up
/**
 * 连接bash.
 * @param ip 宿主机ip地址
 * @param execId 命令id
 * @return 连接的socket
 * @throws IOException
 */
private Socket connectExec(String ip, String execId) throws IOException {
    Socket socket=new Socket(ip,2375);
    socket.setKeepAlive(true);
    OutputStream out = socket.getOutputStream();
    StringBuffer pw = new StringBuffer();
    pw.append("POST /exec/"+execId+"/start HTTP/1.1\r\n");
    pw.append("Host: "+ip+":2375\r\n");
    pw.append("User-Agent: Docker-Client\r\n");
    pw.append("Content-Type: application/json\r\n");
    pw.append("Connection: Upgrade\r\n");
    JSONObject obj = new JSONObject();
    obj.put("Detach",false);
    obj.put("Tty",true);
    String json=obj.toJSONString();
    pw.append("Content-Length: "+json.length()+"\r\n");
    pw.append("Upgrade: tcp\r\n");
    pw.append("\r\n");
    pw.append(json);
    out.write(pw.toString().getBytes("UTF-8"));
    out.flush();
    return socket;
}
 
Example 2
Source File: UtilsTest.java    From grpc-nebula-java with Apache License 2.0 6 votes vote down vote up
@Test
public void getSocketOptions() throws Exception {
  Socket socket = new Socket();
  socket.setSoLinger(true, 2);
  socket.setSoTimeout(3);
  socket.setTcpNoDelay(true);
  socket.setReuseAddress(true);
  socket.setReceiveBufferSize(4000);
  socket.setSendBufferSize(5000);
  socket.setKeepAlive(true);
  socket.setOOBInline(true);
  socket.setTrafficClass(8); // note: see javadoc for valid input values

  SocketOptions socketOptions = Utils.getSocketOptions(socket);
  assertEquals(2, (int) socketOptions.lingerSeconds);
  assertEquals(3, (int) socketOptions.soTimeoutMillis);
  assertEquals("true", socketOptions.others.get("TCP_NODELAY"));
  assertEquals("true", socketOptions.others.get("SO_REUSEADDR"));
  assertEquals("4000", socketOptions.others.get("SO_RECVBUF"));
  assertEquals("5000", socketOptions.others.get("SO_SNDBUF"));
  assertEquals("true", socketOptions.others.get("SO_KEEPALIVE"));
  assertEquals("true", socketOptions.others.get("SO_OOBINLINE"));
  assertEquals("8", socketOptions.others.get("IP_TOS"));
}
 
Example 3
Source File: UtilsTest.java    From grpc-java with Apache License 2.0 6 votes vote down vote up
@Test
public void getSocketOptions() throws Exception {
  Socket socket = new Socket();
  socket.setSoLinger(true, 2);
  socket.setSoTimeout(3);
  socket.setTcpNoDelay(true);
  socket.setReuseAddress(true);
  socket.setReceiveBufferSize(4000);
  socket.setSendBufferSize(5000);
  socket.setKeepAlive(true);
  socket.setOOBInline(true);
  socket.setTrafficClass(8); // note: see javadoc for valid input values

  SocketOptions socketOptions = Utils.getSocketOptions(socket);
  assertEquals(2, (int) socketOptions.lingerSeconds);
  assertEquals(3, (int) socketOptions.soTimeoutMillis);
  assertEquals("true", socketOptions.others.get("TCP_NODELAY"));
  assertEquals("true", socketOptions.others.get("SO_REUSEADDR"));
  assertEquals("4000", socketOptions.others.get("SO_RECVBUF"));
  assertEquals("5000", socketOptions.others.get("SO_SNDBUF"));
  assertEquals("true", socketOptions.others.get("SO_KEEPALIVE"));
  assertEquals("true", socketOptions.others.get("SO_OOBINLINE"));
  assertEquals("8", socketOptions.others.get("IP_TOS"));
}
 
Example 4
Source File: TCPMasterConnection.java    From openhab1-addons with Eclipse Public License 2.0 6 votes vote down vote up
/**
 * Opens this <tt>TCPMasterConnection</tt>.
 *
 * @throws Exception if there is a network failure.
 */
@Override
public synchronized boolean connect() throws Exception {
    if (!isConnected()) {
        logger.debug("connect()");
        m_Socket = new Socket();
        m_Socket.connect(new InetSocketAddress(m_Address, m_Port), this.m_ConnectTimeoutMillis);
        setTimeout(m_Timeout);
        m_Socket.setReuseAddress(true);
        m_Socket.setSoLinger(true, 1);
        m_Socket.setKeepAlive(true);
        prepareTransport();
        m_Connected = true;
    }
    return m_Connected;
}
 
Example 5
Source File: ExtendedConnectionOperator.java    From lavaplayer with Apache License 2.0 6 votes vote down vote up
private void configureSocket(Socket socket, SocketConfig socketConfig) throws IOException {
  socket.setSoTimeout(socketConfig.getSoTimeout());
  socket.setReuseAddress(socketConfig.isSoReuseAddress());
  socket.setTcpNoDelay(socketConfig.isTcpNoDelay());
  socket.setKeepAlive(socketConfig.isSoKeepAlive());

  if (socketConfig.getRcvBufSize() > 0) {
    socket.setReceiveBufferSize(socketConfig.getRcvBufSize());
  }

  if (socketConfig.getSndBufSize() > 0) {
    socket.setSendBufferSize(socketConfig.getSndBufSize());
  }

  if (socketConfig.getSoLinger() >= 0) {
    socket.setSoLinger(true, socketConfig.getSoLinger());
  }
}
 
Example 6
Source File: FrontendConnectionFactory.java    From heisenberg with Apache License 2.0 5 votes vote down vote up
public FrontendConnection make(SocketChannel channel) throws IOException {
    Socket socket = channel.socket();
    socket.setReceiveBufferSize(socketRecvBuffer);
    socket.setSendBufferSize(socketSendBuffer);
    socket.setTcpNoDelay(true);
    socket.setKeepAlive(true);
    FrontendConnection c = getConnection(channel);
    c.setPacketHeaderSize(packetHeaderSize);
    c.setMaxPacketSize(maxPacketSize);
    c.setWriteQueue(new BufferQueue(writeQueueCapcity));
    c.setIdleTimeout(idleTimeout);
    c.setCharset(charset);
    return c;
}
 
Example 7
Source File: Config.java    From mts with GNU General Public License v3.0 5 votes vote down vote up
public static void getConfigForTCPSocket(Socket socket, boolean tlsTransport) throws Exception
  {
boolean keepAlive = Config.getConfigByName("tcp.properties").getBoolean("socket.KEEP_ALIVE", false);
socket.setKeepAlive(keepAlive);
if (!tlsTransport)
{
	boolean oobInline = Config.getConfigByName("tcp.properties").getBoolean("socket.OOB_INLINE", false);
	socket.setOOBInline(oobInline);
}
int receiveBuffer = Config.getConfigByName("tcp.properties").getInteger("socket.RECEIVE_BUFFER", 8192);
socket.setReceiveBufferSize(receiveBuffer);
boolean reuseAddress = Config.getConfigByName("tcp.properties").getBoolean("socket.REUSE_ADDRESS", false);
socket.setReuseAddress(reuseAddress);
int sendBuffer = Config.getConfigByName("tcp.properties").getInteger("socket.SEND_BUFFER", 8192);
socket.setSendBufferSize(sendBuffer);
int lingerTimeout = Config.getConfigByName("tcp.properties").getInteger("socket.LINGER_TIMEOUT", -1);
if (lingerTimeout >= 0)
	socket.setSoLinger(true, lingerTimeout);
else
	socket.setSoLinger(false, 0);
int timeout = Config.getConfigByName("tcp.properties").getInteger("socket.TIMEOUT", 0);
socket.setSoTimeout(timeout);
boolean tcpNoDelay = Config.getConfigByName("tcp.properties").getBoolean("socket.TCP_NO_DELAY", false);
socket.setTcpNoDelay(tcpNoDelay);
int trafficClass = Config.getConfigByName("tcp.properties").getInteger("socket.TRAFFIC_CLASS", 0);
socket.setTrafficClass(trafficClass);
  }
 
Example 8
Source File: ApacheThriftMethodInvoker.java    From drift with Apache License 2.0 5 votes vote down vote up
private void setSocketProperties(Socket socket)
        throws SocketException
{
    socket.setSoLinger(false, 0);
    socket.setTcpNoDelay(true);
    socket.setKeepAlive(true);
    socket.setSoTimeout(Ints.saturatedCast(requestTimeoutMillis));
}
 
Example 9
Source File: DefaultSocketFactoryImpl.java    From openjdk-8-source with GNU General Public License v2.0 5 votes vote down vote up
public void setAcceptedSocketOptions(Acceptor acceptor,
                                     ServerSocket serverSocket,
                                     Socket socket)
    throws SocketException
{
    // Disable Nagle's algorithm (i.e., always send immediately).
    socket.setTcpNoDelay(true);
    if (keepAlive)
        socket.setKeepAlive(true);
}
 
Example 10
Source File: BioReceiver.java    From tomcatsrc with Apache License 2.0 5 votes vote down vote up
public void listen() throws Exception {
    if (doListen()) {
        log.warn("ServerSocket already started");
        return;
    }
    setListen(true);

    while ( doListen() ) {
        Socket socket = null;
        if ( getTaskPool().available() < 1 ) {
            if ( log.isWarnEnabled() )
                log.warn("All BIO server replication threads are busy, unable to handle more requests until a thread is freed up.");
        }
        BioReplicationTask task = (BioReplicationTask)getTaskPool().getRxTask();
        if ( task == null ) continue; //should never happen
        try {
            socket = serverSocket.accept();
        }catch ( Exception x ) {
            if ( doListen() ) throw x;
        }
        if ( !doListen() ) {
            task.setDoRun(false);
            task.serviceSocket(null,null);
            getExecutor().execute(task);
            break; //regular shutdown
        }
        if ( socket == null ) continue;
        socket.setReceiveBufferSize(getRxBufSize());
        socket.setSendBufferSize(getTxBufSize());
        socket.setTcpNoDelay(getTcpNoDelay());
        socket.setKeepAlive(getSoKeepAlive());
        socket.setOOBInline(getOoBInline());
        socket.setReuseAddress(getSoReuseAddress());
        socket.setSoLinger(getSoLingerOn(),getSoLingerTime());
        socket.setSoTimeout(getTimeout());
        ObjectReader reader = new ObjectReader(socket);
        task.serviceSocket(socket,reader);
        getExecutor().execute(task);
    }//while
}
 
Example 11
Source File: Connection.java    From gemfirexd-oss with Apache License 2.0 5 votes vote down vote up
/** creates a connection that we accepted (it was initiated by
   * an explicit connect being done on the other side).
   */
  private Connection(ConnectionTable t, Socket s)
    throws IOException, ConnectionException
  {
    if (t == null) {
      throw new IllegalArgumentException(LocalizedStrings.Connection_NULL_CONNECTIONTABLE.toLocalizedString());
    }
    this.isReceiver = true;
    this.owner = t;
    this.logger = owner.getLogger();
    Assert.assertTrue(this.logger != null);
    this.socket = s;
    this.conduitIdStr = owner.getConduit().getId().toString();
    this.handshakeRead = false;
    this.handshakeCancelled = false;
    this.connected = true;

    try {
      s.setTcpNoDelay(true);
      s.setKeepAlive(true);
//      s.setSoLinger(true, (Integer.valueOf(System.getProperty("p2p.lingerTime", "5000"))).intValue());
      setSendBufferSize(s, SMALL_BUFFER_SIZE);
      setReceiveBufferSize(s);
    }
    catch (SocketException e) {
      // unable to get the settings we want.  Don't log an error because it will
      // likely happen a lot
    }
    if (!useNIO()) {
      try {
        //this.output = new BufferedOutputStream(s.getOutputStream(), SMALL_BUFFER_SIZE);
        this.output = s.getOutputStream();
      }
      catch (IOException io) {
        logger.severe(LocalizedStrings.Connection_UNABLE_TO_GET_P2P_CONNECTION_STREAMS, io);
        SocketCreator.asyncClose(s, this.logger, this.remoteAddr.toString(), null);
        throw io;
      }
    }
  }
 
Example 12
Source File: ProxyHandler.java    From AndServer with Apache License 2.0 5 votes vote down vote up
private Socket createSocket(HttpHost host) throws IOException {
    Socket socket = new Socket();
    socket.setSoTimeout(60 * 1000);
    socket.setReuseAddress(true);
    socket.setTcpNoDelay(true);
    socket.setKeepAlive(true);
    socket.setReceiveBufferSize(BUFFER);
    socket.setSendBufferSize(BUFFER);
    socket.setSoLinger(true, 0);

    String scheme = host.getSchemeName();
    String hostName = host.getHostName();
    int port = host.getPort();

    InetSocketAddress address = resolveAddress(scheme, hostName, port);
    socket.connect(address, 10 * 1000);

    if ("https".equalsIgnoreCase(scheme)) {
        SSLSocket sslSocket = (SSLSocket) mSocketFactory.createSocket(socket, hostName, port, true);
        try {
            sslSocket.startHandshake();
            final SSLSession session = sslSocket.getSession();
            if (session == null) {
                throw new SSLHandshakeException("SSL session not available.");
            }
        } catch (final IOException ex) {
            IOUtils.closeQuietly(sslSocket);
            throw ex;
        }
        return sslSocket;
    }
    return socket;
}
 
Example 13
Source File: BioSocketChannelPool.java    From canal with Apache License 2.0 5 votes vote down vote up
public static BioSocketChannel open(SocketAddress address) throws Exception {
    Socket socket = new Socket();
    socket.setSoTimeout(BioSocketChannel.SO_TIMEOUT);
    socket.setTcpNoDelay(true);
    socket.setKeepAlive(true);
    socket.setReuseAddress(true);
    socket.connect(address, BioSocketChannel.DEFAULT_CONNECT_TIMEOUT);
    return new BioSocketChannel(socket);
}
 
Example 14
Source File: Connection.java    From gemfirexd-oss with Apache License 2.0 5 votes vote down vote up
/** creates a connection that we accepted (it was initiated by
   * an explicit connect being done on the other side).
   */
  private Connection(ConnectionTable t, Socket s)
    throws IOException, ConnectionException
  {
    if (t == null) {
      throw new IllegalArgumentException(LocalizedStrings.Connection_NULL_CONNECTIONTABLE.toLocalizedString());
    }
    this.isReceiver = true;
    this.owner = t;
    this.logger = owner.getLogger();
    Assert.assertTrue(this.logger != null);
    this.socket = s;
    this.conduitIdStr = owner.getConduit().getId().toString();
    this.handshakeRead = false;
    this.handshakeCancelled = false;
    this.connected = true;

    try {
      s.setTcpNoDelay(true);
      s.setKeepAlive(true);
//      s.setSoLinger(true, (Integer.valueOf(System.getProperty("p2p.lingerTime", "5000"))).intValue());
      setSendBufferSize(s, SMALL_BUFFER_SIZE);
      setReceiveBufferSize(s);
    }
    catch (SocketException e) {
      // unable to get the settings we want.  Don't log an error because it will
      // likely happen a lot
    }
    if (!useNIO()) {
      try {
        //this.output = new BufferedOutputStream(s.getOutputStream(), SMALL_BUFFER_SIZE);
        this.output = s.getOutputStream();
      }
      catch (IOException io) {
        logger.severe(LocalizedStrings.Connection_UNABLE_TO_GET_P2P_CONNECTION_STREAMS, io);
        SocketCreator.asyncClose(s, this.logger, this.remoteAddr.toString(), null);
        throw io;
      }
    }
  }
 
Example 15
Source File: BlobIntegrationTest.java    From crate with Apache License 2.0 5 votes vote down vote up
@Test
public void testHeadRequestConnectionIsNotClosed() throws Exception {
    Socket socket = new Socket(randomNode.getAddress(), randomNode.getPort());
    socket.setKeepAlive(true);
    socket.setSoTimeout(3000);

    OutputStream outputStream = socket.getOutputStream();
    outputStream.write("HEAD /_blobs/invalid/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa HTTP/1.1\r\n"
        .getBytes(StandardCharsets.UTF_8));
    outputStream.write("Host: localhost\r\n\r\n".getBytes(StandardCharsets.UTF_8));
    outputStream.flush();

    BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
    int linesRead = 0;
    while (linesRead < 3) {
        String line = reader.readLine();
        System.out.println(line);
        linesRead++;
    }

    assertSocketIsConnected(socket);
    outputStream.write("HEAD /_blobs/invalid/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa HTTP/1.1\r\n"
        .getBytes(StandardCharsets.UTF_8));
    outputStream.write("Host: localhost\r\n\r\n".getBytes(StandardCharsets.UTF_8));
    outputStream.flush();
    int read = reader.read();
    assertThat(read, greaterThan(-1));
    assertSocketIsConnected(socket);
}
 
Example 16
Source File: DemoClientTEST.java    From nettythrift with Apache License 2.0 5 votes vote down vote up
@Test
public void test_tcp_shortMsgAndProxy() throws Exception {
	Socket socket = new Socket();
	try {
		// configSocket(socket);
		// socket.connect(new InetSocketAddress("10.50.0.174", 8081), 6000);
		socket.connect(new InetSocketAddress("localhost", 8083), 6000);
		socket.setReuseAddress(true);
		socket.setSoLinger(false, 0);
		socket.setTcpNoDelay(true);
		socket.setKeepAlive(false);
		// socket.setSoTimeout(5000);
		/**
		 * 发送TCP请求
		 */
		OutputStream out = socket.getOutputStream();
		String proxy = "PROXY TCP4 198.51.100.22 203.0.113.7 35646 80\r\n";
		// out.write((proxy + getPingBao).getBytes());
		out.write((proxy + PING).getBytes());
		out.flush();
		System.out.println("==== 响应 ========");
		System.out.println(new String(read(socket.getInputStream())));
	} finally {
		System.out.println("关闭socket");
		socket.close();
	}
}
 
Example 17
Source File: RpcSocketHelper.java    From p4ic4idea with Apache License 2.0 4 votes vote down vote up
/**
 * Configure a socket with specified properties.
 */
public static void configureSocket(Socket socket, Properties properties) {
	if (socket == null || properties == null) {
		return;
	}

	try {
		// Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm).
		boolean tcpNoDelay = RpcPropertyDefs.getPropertyAsBoolean(properties,
				RpcPropertyDefs.RPC_SOCKET_TCP_NO_DELAY_NICK,
				RpcPropertyDefs.RPC_SOCKET_TCP_NO_DELAY_DEFAULT);
		socket.setTcpNoDelay(tcpNoDelay);
		
		String keepAlive = RpcPropertyDefs.getProperty(properties,
				RpcPropertyDefs.RPC_SOCKET_USE_KEEPALIVE_NICK);

		int timeouts = RpcPropertyDefs.getPropertyAsInt(properties,
				RpcPropertyDefs.RPC_SOCKET_SO_TIMEOUT_NICK,
				RpcPropertyDefs.RPC_SOCKET_SO_TIMEOUT_DEFAULT);

		int[] perfPrefs = RpcPropertyDefs.getPropertyAsIntArray(properties,
				RpcPropertyDefs.RPC_SOCKET_PERFORMANCE_PREFERENCES_NICK,
				RpcPropertyDefs.RPC_DEFAULT_PROPERTY_DELIMITER,
				RpcPropertyDefs.RPC_SOCKET_PERFORMANCE_PREFERENCES_DEFAULT);

		// Setting the socket performance preferences, described by three
		// integers whose values indicate the relative importance of short
		// connection time, low latency, and high bandwidth.
		// Socket.setPerformancePreferences(int connectionTime, int latency, int bandwidth)
		// The default values is (1, 2, 0), assume no one changes them.
		// This gives the highest importance to low latency, followed by
		// short connection time, and least importance to high bandwidth.
		if (perfPrefs != null && perfPrefs.length == 3) {
			socket.setPerformancePreferences(
					perfPrefs[0],
					perfPrefs[1],
					perfPrefs[2]);
		}
		
		socket.setSoTimeout(timeouts);

		if ((keepAlive != null)
				&& (keepAlive.startsWith("n") || keepAlive.startsWith("N"))) {
			socket.setKeepAlive(false);
		} else {
			socket.setKeepAlive(true);
		}

		int sockRecvBufSize = RpcPropertyDefs.getPropertyAsInt(properties,
				RpcPropertyDefs.RPC_SOCKET_RECV_BUF_SIZE_NICK, 0);
		int sockSendBufSize = RpcPropertyDefs.getPropertyAsInt(properties,
				RpcPropertyDefs.RPC_SOCKET_SEND_BUF_SIZE_NICK, 0);

		if (sockRecvBufSize != 0) {
			socket.setReceiveBufferSize(sockRecvBufSize);
		}

		if (sockSendBufSize != 0) {
			socket.setSendBufferSize(sockSendBufSize);
		}
	} catch (Throwable exc) {
		Log
				.warn("Unexpected exception while setting Perforce RPC socket options: "
						+ exc.getLocalizedMessage());
		Log.exception(exc);
	}
}
 
Example 18
Source File: TCPTunnel.java    From java-tcp-tunnel with MIT License 4 votes vote down vote up
/**
 * Connects to the remote host and starts bidirectional forwarding (the tunnel).
 */
public void run() {
  String dateStr = sdf.format(new Date());
  try {
    // Connect to the destination server
    serverSocket = new Socket(params.getRemoteHost(), params.getRemotePort());

    // Turn on keep-alive for both the sockets
    serverSocket.setKeepAlive(true);
    localSocket.setKeepAlive(true);

    // Obtain client & server input & output streams
    InputStream clientIn = localSocket.getInputStream();
    OutputStream clientOut = localSocket.getOutputStream();
    InputStream serverIn = serverSocket.getInputStream();
    OutputStream serverOut = serverSocket.getOutputStream();

    // Start forwarding data between server and client
    active = true;
    String clientAddr = toStr(localSocket);
    String serverAddr = toStr(serverSocket);
    String hummanClientAddr = Utils.mapAddrToHumanReadable(clientAddr);
    String hummanServerAddr = Utils.mapAddrToHumanReadable(serverAddr);
    clientAddr = clientAddr+" ("+hummanClientAddr+")";
    serverAddr = serverAddr+" ("+hummanServerAddr+")";
    TCPForwarder clientForward = new TCPForwarder(this, clientIn, serverOut, params, true, clientAddr);
    clientForward.start();
    TCPForwarder serverForward = new TCPForwarder(this, serverIn, clientOut, params, false, serverAddr);
    serverForward.start();

    if (params.isPrint()) {
      System.out.println(dateStr+": TCP Forwarding " + clientAddr + " <--> " + serverAddr);
    }
  } catch (IOException ioe) {
    if (params.isPrint()) {
      String remoteAddr = params.getRemoteHost() + ":" + params.getRemotePort();
      String humanRemoteAddr = Utils.mapAddrToHumanReadable(remoteAddr);
      remoteAddr = remoteAddr + " ("+humanRemoteAddr+")";
      System.err.println(dateStr + ": Failed to connect to remote host (" + remoteAddr + ")");
    }
    connectionBroken();
  }
}
 
Example 19
Source File: RpcSocketHelper.java    From p4ic4idea with Apache License 2.0 4 votes vote down vote up
/**
 * Configure a socket with specified properties.
 */
public static void configureSocket(Socket socket, Properties properties) {
	if (socket == null || properties == null) {
		return;
	}

	try {
		// Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm).
		boolean tcpNoDelay = RpcPropertyDefs.getPropertyAsBoolean(properties,
				RpcPropertyDefs.RPC_SOCKET_TCP_NO_DELAY_NICK,
				RpcPropertyDefs.RPC_SOCKET_TCP_NO_DELAY_DEFAULT);
		socket.setTcpNoDelay(tcpNoDelay);
		
		String keepAlive = RpcPropertyDefs.getProperty(properties,
				RpcPropertyDefs.RPC_SOCKET_USE_KEEPALIVE_NICK);

		int timeouts = RpcPropertyDefs.getPropertyAsInt(properties,
				RpcPropertyDefs.RPC_SOCKET_SO_TIMEOUT_NICK,
				RpcPropertyDefs.RPC_SOCKET_SO_TIMEOUT_DEFAULT);

		int[] perfPrefs = RpcPropertyDefs.getPropertyAsIntArray(properties,
				RpcPropertyDefs.RPC_SOCKET_PERFORMANCE_PREFERENCES_NICK,
				RpcPropertyDefs.RPC_DEFAULT_PROPERTY_DELIMITER,
				RpcPropertyDefs.RPC_SOCKET_PERFORMANCE_PREFERENCES_DEFAULT);

		// Setting the socket performance preferences, described by three
		// integers whose values indicate the relative importance of short
		// connection time, low latency, and high bandwidth.
		// Socket.setPerformancePreferences(int connectionTime, int latency, int bandwidth)
		// The default values is (1, 2, 0), assume no one changes them.
		// This gives the highest importance to low latency, followed by
		// short connection time, and least importance to high bandwidth.
		if (perfPrefs != null && perfPrefs.length == 3) {
			socket.setPerformancePreferences(
					perfPrefs[0],
					perfPrefs[1],
					perfPrefs[2]);
		}
		
		socket.setSoTimeout(timeouts);

		if ((keepAlive != null)
				&& (keepAlive.startsWith("n") || keepAlive.startsWith("N"))) {
			socket.setKeepAlive(false);
		} else {
			socket.setKeepAlive(true);
		}

		int sockRecvBufSize = RpcPropertyDefs.getPropertyAsInt(properties,
				RpcPropertyDefs.RPC_SOCKET_RECV_BUF_SIZE_NICK, 0);
		int sockSendBufSize = RpcPropertyDefs.getPropertyAsInt(properties,
				RpcPropertyDefs.RPC_SOCKET_SEND_BUF_SIZE_NICK, 0);

		if (sockRecvBufSize != 0) {
			socket.setReceiveBufferSize(sockRecvBufSize);
		}

		if (sockSendBufSize != 0) {
			socket.setSendBufferSize(sockSendBufSize);
		}
	} catch (Throwable exc) {
		Log
				.warn("Unexpected exception while setting Perforce RPC socket options: "
						+ exc.getLocalizedMessage());
		Log.exception(exc);
	}
}
 
Example 20
Source File: ServerSocketDaemon.java    From balzac with Apache License 2.0 2 votes vote down vote up
/**
 * Return a Socket for this daemon. The socket is creating using
 * {@code InetAddress.getLocalHost()} as host.
 * 
 * @return a socket.
 * @throws IOException if an I/O error occurs when creating the socket.
 */
public Socket getSocket() throws IOException {
    Socket socket = new Socket(InetAddress.getLocalHost(), getPort());
    socket.setKeepAlive(true);
    return socket;
}