Java tutorial
/* * Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002. * All rights reserved. Software written by Ian F. Darwin and others. * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Java, the Duke mascot, and all variants of Sun's Java "steaming coffee * cup" logo are trademarks of Sun Microsystems. Sun's, and James Gosling's, * pioneering role in inventing and promulgating (and standardizing) the Java * language and environment is gratefully acknowledged. * * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for * inventing predecessor languages C and C++ is also gratefully acknowledged. */ //applet.html /* <HTML> <HEAD> <TITLE>Demo Applet: Connect to Legacy System</TITLE> </HEAD> <BODY BGCOLOR="96FF6F"> <H1>Demo Applet: Connect to Legacy Server</H1> <P>Please use this applet to Login to our server server. This will demonstrate an Applet via a Socket connection.</P> <P>Thank you!</P> <HR> <APPLET CODE="SocketApplet" width=300 height=120> </APPLET> <HR> <Address>Ian@DarwinSys.com</ADDRESS> </BODY> </HTML> */ import java.applet.Applet; import java.awt.Button; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Image; import java.awt.Label; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.URL; /** * Socket Applet for "legacy" server connection via Socket. * * @version $Id: SocketApplet.java,v 1.5 2004/02/09 03:33:44 ian Exp $ * @author Ian F. Darwin, http://www.darwinsys.com/ */ public class SocketApplet extends Applet { TextField nameTF, passTF, domainTF; Image im; Button sendButton; /** Where the Applet came from */ URL whence; //+ /** Initialize the GUI nicely. */ public void init() { Label aLabel; setLayout(new GridBagLayout()); int LOGO_COL = 1; int LABEL_COL = 2; int TEXT_COL = 3; int BUTTON_COL = 1; GridBagConstraints gbc = new GridBagConstraints(); gbc.weightx = 100.0; gbc.weighty = 100.0; gbc.gridx = LABEL_COL; gbc.gridy = 0; gbc.anchor = GridBagConstraints.EAST; add(aLabel = new Label("Name:", Label.CENTER), gbc); gbc.anchor = GridBagConstraints.CENTER; gbc.gridx = TEXT_COL; gbc.gridy = 0; add(nameTF = new TextField(10), gbc); gbc.gridx = LABEL_COL; gbc.gridy = 1; gbc.anchor = GridBagConstraints.EAST; add(aLabel = new Label("Password:", Label.CENTER), gbc); gbc.anchor = GridBagConstraints.CENTER; gbc.gridx = TEXT_COL; gbc.gridy = 1; add(passTF = new TextField(10), gbc); passTF.setEchoChar('*'); gbc.gridx = LABEL_COL; gbc.gridy = 2; gbc.anchor = GridBagConstraints.EAST; add(aLabel = new Label("Domain:", Label.CENTER), gbc); gbc.anchor = GridBagConstraints.CENTER; gbc.gridx = TEXT_COL; gbc.gridy = 2; add(domainTF = new TextField(10), gbc); sendButton = new Button("Send data"); gbc.gridx = BUTTON_COL; gbc.gridy = 3; gbc.gridwidth = 3; add(sendButton, gbc); whence = getCodeBase(); // Now the action begins... sendButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { String name = nameTF.getText(); if (name.length() == 0) { showStatus("Name required"); return; } String domain = domainTF.getText(); if (domain.length() == 0) { showStatus("Domain required"); return; } showStatus("Connecting to host " + whence.getHost() + " as " + nameTF.getText()); try { Socket s = new Socket(getCodeBase().getHost(), 3333); PrintWriter pf = new PrintWriter(s.getOutputStream(), true); // send login name pf.println(nameTF.getText()); // passwd pf.println(passTF.getText()); // and domain pf.println(domainTF.getText()); BufferedReader is = new BufferedReader(new InputStreamReader(s.getInputStream())); String response = is.readLine(); showStatus(response); } catch (IOException e) { showStatus("ERROR: " + e.getMessage()); } } }); } //- }