Skip to Main Content

Java APIs

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Slow new DatagramSocket()

843790Nov 21 2009 — edited Dec 1 2009
I have an applet which creates a DatagramSocket. Creating the socket takes about 10-13 seconds. When running the same code on my machine within eclipse it is not this slow. Why does it take so long?

Full code:
public class ChessApplet extends JApplet {

	private UDPReceiver receiver;
	private DatagramSocket socket;
	private Thread thread;
	private UDPSendImpl sender;
	private ChatController chatController;
	private MoveLossHandler moveLossHandler;
	private ChessController chessController;

	@Override
	public void init() {
		initGUI(getParameter("serverIp"));
	}

	@Override
	public void destroy() {
		socket.close();
	}

	private void initGUI(final String serverIp) {
		if (SwingUtilities.isEventDispatchThread()) {
			doInit();
		} else {
			try {
				SwingUtilities.invokeAndWait(new Runnable() {
					public void run() {
						doInit();
					}
				});
			} catch (Exception e) {
				Util.log(e);
			}
		}
		new Thread(new Runnable() {
			public void run() {
				try {
					socket = new DatagramSocket();
					sender = new UDPSendImpl(serverIp, socket);
					chatController.setSender(sender);
					moveLossHandler.setSender(sender);
					receiver = new UDPReceiver(moveLossHandler, chessController, chatController, socket);
					thread = new Thread(receiver);
					thread.start();
					sender.requestAllGames();
					SwingUtilities.invokeLater(new Runnable() {
						public void run() {
							moveLossHandler.setSender(sender);
							chatController.setSender(sender);
							chatController.setChatLoginButtonEnabled(true);
						}
					});
				} catch (final Exception e) {
					SwingUtilities.invokeLater(new Runnable() {
						public void run() {
							JOptionPane.showMessageDialog(null, "Unable to start application: " + e.getMessage());
						}
					});
				}
			}
		}).start();
	}

	private void doInit() {
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {
			e.printStackTrace();
		}
		try {
			JPanel top = new JPanel(new BorderLayout());
			top.setBorder(BorderFactory.createLineBorder(Color.BLACK));
			ChatView chatView = new ChatView();
			chatController = new ChatController(chatView);

			JMultipleChessView chessView = new JMultipleChessView();
			chessController = new ChessController(chessView);
			moveLossHandler = new MoveLossHandler(chessController);

			JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT, chessView, chatView);
			split.setDividerSize(4);
			split.setBorder(BorderFactory.createEmptyBorder());
			split.setDividerLocation(0.7d);
			split.setResizeWeight(0.7d);
			top.add(new HeaderPanel(), BorderLayout.NORTH);
			top.add(split, BorderLayout.CENTER);
			setSize(new Dimension(800, 600));
			add(top);
		} catch (Exception e) {
			Util.log(e);
		}
	}

	public static JFrame startGUI(String host) throws Exception {
		JFrame frame = new JFrame("Test Frame");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(800, 600);
		frame.setLocationRelativeTo(null);

		ChessApplet comp = new ChessApplet();
		comp.initGUI(host);
		frame.getContentPane().add(comp);
		frame.setVisible(true);
		return frame;
	}

	public static void main(String[] args) throws Exception {
		startGUI("tyken.net");
	}

}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 29 2009
Added on Nov 21 2009
4 comments
145 views