Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2013, 06:38   #1
vadkasevas
 
Регистрация: 25.10.2010
Сообщений: 4
По умолчанию Прокси сервер на netty: выбор сетевого интерфейса

Разбираюсь с исходниками http://www.littleshoot.com/littleproxy/ . Это http прокси сервер, написанный на java с использованием netty.
К сожалению, он не позволяет выбирать сетевой интерфейс по которому будут идти запросы на сервер. Т.е. мне нужно следующее: в зависимости от запрашиваемого URL запросы идут через разные интерфейсы. С netty я не знаком.
За получение соединения отвечает метод класса HttpRequestHandler:
PHP код:
private ChannelFuture newChannelFuture(final HttpRequest httpRequest, final Channel browserToProxyChannel, final String hostAndPort
        
throws UnknownHostException {
        final 
String host;
        final 
int port;
        if (
hostAndPort.contains(":")) {
            
host StringUtils.substringBefore(hostAndPort":");
            final 
String portString 
                
StringUtils.substringAfter(hostAndPort":");
            
port Integer.parseInt(portString);
        }
        else {
            
host hostAndPort;
            
port 80;
        }
        
        
// Configure the client.
        
final ClientBootstrap cb 
            new 
ClientBootstrap(this.clientChannelFactory);
        final 
ChannelPipelineFactory cpf;
        if (
httpRequest.getMethod() == HttpMethod.CONNECT && !LittleProxyConfig.isUseSSLMitm()) {
            
// In the case of CONNECT, we just want to relay all data in both 
            // directions. We SHOULD make sure this is traffic on a reasonable
            // port, however, such as 80 or 443, to reduce security risks.
            
cpf = new ChannelPipelineFactory() {
                @
Override
                
public ChannelPipeline getPipeline() throws Exception {
                    
// Create a default pipeline implementation.
                    
final ChannelPipeline pipeline = new DefaultChannelPipeline();
                    
pipeline.addLast("handler"
                        new 
HttpConnectRelayingHandler(browserToProxyChannel,
                            
channelGroup));
                    return 
pipeline;
                }
            };
        }
        else {
            
cpf relayPipelineFactoryFactory.getRelayPipelineFactory(
                
httpRequestbrowserToProxyChannelthis);
        }
        
        
cb.setPipelineFactory(cpf);
        
cb.setOption("connectTimeoutMillis"40*1000);
        
log.debug("Starting new connection to: {}"hostAndPort);
        
ChannelFuture cf;
        if (
LittleProxyConfig.isUseDnsSec()) {
            
cf cb.connect(VerifiedAddressFactory.newInetSocketAddress(hostportLittleProxyConfig.isUseDnsSec()));
        }else {
            final 
InetAddress ia InetAddress.getByName(host);
            final 
String address ia.getHostAddress();
            try{
                    
/*мой код, здесь я пытаюсь выбрать сетевой интерфейс для отправки сообщения на сервер*/
                     
NetworkInterface nif NetworkInterface.getByName("neth2");                    
                     
DatagramChannel channel = (DatagramChannelcb.bind( new InetSocketAddress"192.168.1.100"80) );
                     
InetSocketAddress addr = new InetSocketAddress(addressport);
                     
cf channel.joinGroup(addr,nif);
                    
/**/
                 
            
}catch(IOException e){
                    
cf cb.connect(new InetSocketAddress(addressport));
                    
e.printStackTrace();
            }
        }
        
allChannelFutures.add(cf);
        
        return 
cf;
    } 
Естественно, ничего не происходит, данные от сервера не приходят. Вопрос: Как сделать правильно?
vadkasevas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прокси-сервер Ёжик в тумане Свободное общение 10 17.02.2013 23:27
узнать имя сетевого интерфейса его IP/Mac StartMis Работа с сетью в Delphi 1 19.11.2011 21:10
Прокси сервер stenl1 Операционные системы общие вопросы 0 05.06.2010 13:12
Прокси сервер AlexDn Безопасность, Шифрование 1 08.01.2010 07:24
Выбор инструментов для создания интерфейса к БД Repz БД в Delphi 3 12.05.2008 13:32