Всем привет. Есть клиент, есть сервер. У клиента присутствует GUI. Реализовав GUI задался вопросм, где лучше всего расположить соединение с сервером. Соединение реализуется с помощью класса Socket, но на ответы с SocketChannel тоже интересно посмотреть. Сервер пишется свой.
Идеал:
происходит соединение с сервером, во время соединения отображается ход выполнения соединения (это можно опустить), если соединение установилось запускается главный фрейм приложения, иначе выводится диалоговое окно с сообщением, что сервер временно не доступен.
Приблизительный код, котороый выводит только GUI
public class MainFrame extends JFrame {
    /** DEFAULT_WIDTH ширина фрейма по умолчанию */
    public static final int DEFAULT_WIDTH = 600;
    
    /** DEFAULT_HEIGHT высота фрейма по умолчанию */
    public static final int DEFAULT_HEIGHT = 500;
    public static final int DEFAULT_PORT = 2525;
    public static final String DEFAULT_HOST = "localhost";
    public MainFrame() {
        this.setTitle("PC Builder");
        this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
        MainPanel mainPanel = new MainPanel();
        
        this.add(mainPanel, BorderLayout.CENTER);
    }
    private static void createAndShowGUI() {
        MainFrame mainFrame = new MainFrame();
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setVisible(true);
    }
    private static Socket createServerConnection() {
        Socket socket = null;
        try {
            socket = new Socket(DEFAULT_HOST, DEFAULT_PORT);
        } catch (UnknownHostException ex) {
            socket = null;
            Logger.getLogger(MainFrame.class.getName()).log(
                    Level.SEVERE, null, ex);
        } catch (IOException ex) {
            socket = null;
            Logger.getLogger(MainFrame.class.getName()).log(
                    Level.SEVERE, null, ex);
        }
        return socket;
    }
    public static void main(String [] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }         
        });
    }
}