@Override public Socket accept() throws SocksException, IOException { CommandReplyMessage messge = socksCmdSender.checkServerReply(proxySocket.getInputStream()); logger.debug("accept a connection from:{}", messge.getSocketAddress()); return this.proxySocket; }
return new CommandReplyMessage(receivedBytes);
return new CommandReplyMessage(receivedBytes);
@Override public Socket accept() throws SocksException, IOException { CommandReplyMessage messge = socksCmdSender.checkServerReply(proxySocket.getInputStream()); logger.debug("accept a connection from:{}", messge.getSocketAddress()); return this.proxySocket; }
/** * Constructs a server socket. This server socket will established in SOCKS server. * * @param proxy SOCKS proxy. * @param inetAddress The IP address that server socket will accept. * @param port The port that server socket will accept. * @throws SocksException If any error about SOCKS protocol occurs. * @throws IOException If any I/O error occurs. */ public SocksServerSocket(SocksProxy proxy, InetAddress inetAddress, int port) throws SocksException, IOException { this.proxy = proxy.copy(); this.incomePort = port; this.incomeAddress = inetAddress; this.proxy.buildConnection(); // Send BIND command to SOCKS server. CommandReplyMessage replyMesasge = this.proxy.requestBind(incomeAddress, incomePort); // Get a bind IP and port in proxy server. bindAddress = replyMesasge.getIp(); bindPort = replyMesasge.getPort(); logger.debug("Bind at {}:{}", bindAddress, bindPort); }
/** * Constructs a server socket. This server socket will established in SOCKS server. * * @param proxy SOCKS proxy. * @param inetAddress The IP address that server socket will accept. * @param port The port that server socket will accept. * @throws SocksException If any error about SOCKS protocol occurs. * @throws IOException If any I/O error occurs. */ public SocksServerSocket(SocksProxy proxy, InetAddress inetAddress, int port) throws SocksException, IOException { this.proxy = proxy.copy(); this.incomePort = port; this.incomeAddress = inetAddress; this.proxy.buildConnection(); // Send BIND command to SOCKS server. CommandReplyMessage replyMesasge = this.proxy.requestBind(incomeAddress, incomePort); // Get a bind IP and port in proxy server. bindAddress = replyMesasge.getIp(); bindPort = replyMesasge.getPort(); logger.debug("Bind at {}:{}", bindAddress, bindPort); }
/** * Constructs a datagram socket with a {@link SocksProxy}. <br> * <b>Notice:</b> The proxy must be {@link Socks5}, because only SOCKS5 protocol supports UDP * ASSOCIATE. It will throw {@link SocksException} if you give other {@link SocksProxy} * implementation which not supports SOCKS5 protocol. * * @param proxy {@link Socks5} instance. * @throws SocksException If any error about SOCKS protocol occurs. * @throws IOException If any I/O error occurs. * @see <a href="http://www.ietf.org/rfc/rfc1928.txt">SOCKS Protocol Version 5</a> */ public Socks5DatagramSocket(SocksProxy proxy) throws SocksException, IOException { super(); this.proxy = proxy.copy(); if (this.proxy.getChainProxy() != null) { throw new SocksException("Proxy chain not support UDP ASSOCIATE"); } if (!(this.proxy instanceof Socks5)) { throw new SocksException("Only SOCKS5 protocol support UDP ASSOCIATE"); } this.proxy.buildConnection(); CommandReplyMessage message = this.proxy.requestUdpAssociate(this.getLocalAddress(), this.getLocalPort()); logger.debug("build datagram socket at[{}:{}]", this.getLocalAddress(), this.getLocalPort()); this.relayServerInetAddress = message.getIp(); this.relayServerPort = message.getPort(); logger.info("relay server's address[{}:{}]", relayServerInetAddress, relayServerPort); }
/** * Constructs a datagram socket with a {@link SocksProxy}. <br> * <b>Notice:</b> The proxy must be {@link Socks5}, because only SOCKS5 protocol supports UDP * ASSOCIATE. It will throw {@link SocksException} if you give other {@link SocksProxy} * implementation which not supports SOCKS5 protocol. * * @param proxy {@link Socks5} instance. * @throws SocksException If any error about SOCKS protocol occurs. * @throws IOException If any I/O error occurs. * @see <a href="http://www.ietf.org/rfc/rfc1928.txt">SOCKS Protocol Version 5</a> */ public Socks5DatagramSocket(SocksProxy proxy) throws SocksException, IOException { super(); this.proxy = proxy.copy(); if (this.proxy.getChainProxy() != null) { throw new SocksException("Proxy chain not support UDP ASSOCIATE"); } if (!(this.proxy instanceof Socks5)) { throw new SocksException("Only SOCKS5 protocol support UDP ASSOCIATE"); } this.proxy.buildConnection(); CommandReplyMessage message = this.proxy.requestUdpAssociate(this.getLocalAddress(), this.getLocalPort()); logger.debug("build datagram socket at[{}:{}]", this.getLocalAddress(), this.getLocalPort()); this.relayServerInetAddress = message.getIp(); this.relayServerPort = message.getPort(); logger.info("relay server's address[{}:{}]", relayServerInetAddress, relayServerPort); }