Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > Сокеты, сложный вопрос, надеюсь только для меня


Автор: infinit 12.3.2012, 18:53
Всем привет. Подскажите пожалуйста. 
Есть ServerSocket. Можно ли чтобы всё что в него приходит отсылать в Socket, который используется для соединения с другим ServerSocket. 
Тобишь... 
Socket ---read-->ServerSocket (перебрасывает) Socket----read--->ServerSocket

Автор: LSD 13.3.2012, 09:45
Можно smile 
Открываешь ServerSocket, когда к нему подсоединяется клиент ты получаешь Socket. У этого Socket получаешь InputStream из которого читаешь байты и пишешь в OutputStream твоего Socket-а.

Автор: infinit 13.3.2012, 13:26
Цитата(LSD @ 13.3.2012,  09:45)
Можно smile 
Открываешь ServerSocket, когда к нему подсоединяется клиент ты получаешь Socket. У этого Socket получаешь InputStream из которого читаешь байты и пишешь в OutputStream твоего Socket-а.

Согласен, зря не сказал для чего нужно мне это. Всё думаю на вопросом из темы
http://forum.vingrad.ru/forum/topic-348437.html
Можно создать свой сокет при работе которого будет происходить сказанное вами?

Вот пример фабрики для RMI
Код


public class SSLClientSF extends RMISocketFactory{

  private  SSLSocketFactory sslSocketFactory = null;
    
  public SSLClientSF(File store, String password){
      
        try {

            /*Делается SSLSocketFactory*/

            sslSocketFactory = sslContext.getSocketFactory();
            
        } catch (KeyManagementException | 
                 UnrecoverableKeyException | 
                 NoSuchAlgorithmException | 
                 NoSuchProviderException | 
                 KeyStoreException | 
                 CertificateException | 
                 IOException ex) {
            
            ex.printStackTrace();
            
        }
       
  }
    @Override
  public Socket createSocket(String host, int port) throws IOException {
        
    return sslSocketFactory.createSocket(host, port);
    
  }
    
    @Override
  public ServerSocket createServerSocket(int port) throws IOException {
        
       /*А вот тут создать бы свой ServerSocket, создающий Socket,
          который  будет перенаправлять всё в SSL Socket созданный в методе  
          public Socket createSocket(String host, int port)*/
                
  } 
       
}

Автор: COVD 13.3.2012, 16:01
Нельзя. Для этого нужно создать два сокета. 

Автор: LSD 13.3.2012, 17:08
Цитата(infinit @  13.3.2012,  14:26 Найти цитируемый пост)
Можно создать свой сокет при работе которого будет происходить сказанное вами?

Ну можно создать свой врапер над ServerSocket который будет делегировать обычному ServerSocket, а при accept() возвращать враппер над Socket который будет пробрасывать чтение/запись в другой сокет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)