byte[] userBytes = System.getProperty("user.name", "").getBytes(UTF_8);
byte[] hostNameBytes = hostName.getBytes(UTF_8);
ChannelBuffer handshake = ChannelBuffers.dynamicBuffer(10 + userBytes.length + hostNameBytes.length);
handshake.writeByte(SOCKS_VERSION_4); // SOCKS version
handshake.writeByte(CONNECT); // CONNECT
handshake.writeShort(port); // port
handshake.writeByte(0x00); // fake ip
handshake.writeByte(0x00); // fake ip
handshake.writeByte(0x00); // fake ip
handshake.writeByte(0x01); // fake ip
handshake.writeBytes(userBytes); // user name