/*
* 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());
}
}
});
}
//-
}
|