Всем привет. Есть клиент, есть сервер. У клиента присутствует 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();
}
});
}
}