E Esse é o applet ele envia mensagens soh na primeira conexao quando fecho e abro de novo ele nao envia mais perde a conexao
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class oajApplet extends Applet implements ActionListener
{
static Socket clientSocket = null;
public static PrintWriter out = null;
public static BufferedReader in = null;
private class rcvAreaThread extends Thread
{
private rcvTextArea rcvArea;
boolean running = true;
//Constructor rcvAreaThread the thread
public rcvAreaThread(int rows, int cols)
{
super();
rcvArea = new rcvTextArea(rows, cols);
}
//Funciton to stop the thread
public void kill()
{
running = false;
}
//The main function in the thread.
public void run()
{
while (running)
{
try
{
rcvArea.readEvent(); //Read stock from Saleserver
} catch (Exception e)
{
e.printStackTrace();
break;
}
}
}
//Returns the current stock
public rcvTextArea getEvent()
{
return rcvArea;
}
}
private class rcvTextArea extends TextArea
{
boolean disconnect = false;
//Constructor for the class
public rcvTextArea(int rows, int cols)
{
super(rows, cols);
}
private String parseString(String rcvbuf, int offset)
{
String retval = "";
int i = offset;
while ((rcvbuf.charAt(i) != '<') && (i < rcvbuf.length())) {
retval += rcvbuf.charAt(i++);
}
return retval;
}
//Read current stock for specified type of goods, and update the textfield in the GUI
public void readEvent() throws Exception
{
String receive = "", type = "", value = "";
while (true) {
type = "";
value = "";
if (in.readLine().startsWith("<MSG>")) {
do {
receive = in.readLine();
if (receive.startsWith("<TYPE>")) {
type = parseString(receive, 6);
if (type.equalsIgnoreCase("message")) {
this.append("Message received, ");
}
} else if (receive.startsWith("<HDR>")) {
value = parseString(receive, 5);
if (type.equalsIgnoreCase("message")) {
this.append("Header: " + value + ", ");
}
} else if (receive.startsWith("<BODY>")) {
value = parseString(receive, 6);
if (type.equalsIgnoreCase("message")) {
this.append("Body: " + value + ", ");
}
} else if (receive.startsWith("<DEST>")) {
value = parseString(receive, 6);
if (type.equalsIgnoreCase("message")) {
this.append("Origin: " + value + ", ");
}
} else if (receive.startsWith("<ID>")) {
value = parseString(receive, 4);
if (type.equalsIgnoreCase("message")) {
this.append("ID: " + value + ", ");
}
} else if (receive.startsWith("<RID>")) {
value = parseString(receive, 5);
if (type.equalsIgnoreCase("message")) {
this.append("RefID: " + value + "\n");
}
}
} while ( !receive.startsWith("</MSG>") );
}
}
}
}
private Label incLabel = new Label("Incoming: ");
private Label nrLabel = new Label("Number of events received: ");
private Label createLabel = new Label("Create and Send message: ");
private Label hdrLabel = new Label("Type header: ");
private Label msgLabel = new Label("Type message: ");
private Label destLabel = new Label("Type destination: ");
private Label idLabel = new Label("Type ID (0 or empty for automatic): ");
private TextField nrField = new TextField(5);
private TextField hdrField = new TextField(35);
private TextArea msgField = new TextArea(4, 35);
private TextField destField = new TextField(4);
private TextField idField = new TextField("0", 8);
private Button createPag = new Button("Create Message");
private Button quitApp = new Button("Quit");
private Button sendMessage = new Button("Send Message");
private Button cancelMessage = new Button("Cancel");
private int i = 0;
private Panel listenButtons = new Panel();
private Panel messageButtons = new Panel();
private Panel messageHdr = new Panel();
private Panel messageMsg = new Panel();
private Panel messageDest = new Panel();
private Panel messageID = new Panel();
private Frame f, f2;
private GridBagLayout gridbag = new GridBagLayout();
private GridBagConstraints constr = new GridBagConstraints();
private GridBagLayout gridbagMessage = new GridBagLayout();
private GridBagConstraints constrMessage = new GridBagConstraints();
private rcvAreaThread incAreaThr;
private rcvTextArea incArea;
void ipInit()
{
try {
clientSocket = new Socket(getCodeBase().getHost() , 12666);
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
} catch ( Exception e )
{
incLabel.setText(e.toString());
}
}
//Create login frame
public void init()
{
ipInit();
f2 = new Frame();
f2.setLayout(gridbagMessage);
constrMessage.gridx = 0;
constrMessage.gridy = 0;
constrMessage.gridwidth = 4;
gridbagMessage.setConstraints(createLabel, constrMessage);
f2.add(createLabel);
constrMessage.gridx = 1;
constrMessage.gridy = 1;
constrMessage.gridwidth = 2;
gridbagMessage.setConstraints(messageHdr, constrMessage);
messageHdr.add(hdrLabel);
messageHdr.add(hdrField);
f2.add(messageHdr);
constrMessage.gridx = 0;
constrMessage.gridy = 2;
constrMessage.gridwidth = 4;
constrMessage.gridheight = 4;
gridbagMessage.setConstraints(messageMsg, constrMessage);
messageMsg.add(msgLabel);
messageMsg.add(msgField);
f2.add(messageMsg);
constrMessage.gridx = 1;
constrMessage.gridy = 6;
constrMessage.gridwidth = 2;
constrMessage.gridheight = 1;
gridbagMessage.setConstraints(messageDest, constrMessage);
messageDest.add(destLabel);
messageDest.add(destField);
f2.add(messageDest);
constrMessage.gridx = 1;
constrMessage.gridy = 7;
constrMessage.gridwidth = 2;
gridbagMessage.setConstraints(messageID, constrMessage);
messageID.add(idLabel);
messageID.add(idField);
f2.add(messageID);
constrMessage.gridx = 1;
constrMessage.gridy = 8;
constrMessage.gridwidth = 2;
gridbagMessage.setConstraints(messageButtons, constrMessage);
messageButtons.add(cancelMessage);
messageButtons.add(sendMessage);
cancelMessage.setActionCommand("Cancel");
cancelMessage.addActionListener(this);
sendMessage.setActionCommand("Send");
sendMessage.addActionListener(this);
f2.add(messageButtons);
f2.setSize(640, 480);
f2.setVisible(true);
}
//Create frame for purchasing goods
public void createMessage()
{
f2 = new Frame();
f2.setLayout(gridbagMessage);
constrMessage.gridx = 0;
constrMessage.gridy = 0;
constrMessage.gridwidth = 4;
gridbagMessage.setConstraints(createLabel, constrMessage);
f2.add(createLabel);
constrMessage.gridx = 1;
constrMessage.gridy = 1;
constrMessage.gridwidth = 2;
gridbagMessage.setConstraints(messageHdr, constrMessage);
messageHdr.add(hdrLabel);
messageHdr.add(hdrField);
f2.add(messageHdr);
constrMessage.gridx = 0;
constrMessage.gridy = 2;
constrMessage.gridwidth = 4;
constrMessage.gridheight = 4;
gridbagMessage.setConstraints(messageMsg, constrMessage);
messageMsg.add(msgLabel);
messageMsg.add(msgField);
f2.add(messageMsg);
constrMessage.gridx = 1;
constrMessage.gridy = 6;
constrMessage.gridwidth = 2;
constrMessage.gridheight = 1;
gridbagMessage.setConstraints(messageDest, constrMessage);
messageDest.add(destLabel);
messageDest.add(destField);
f2.add(messageDest);
constrMessage.gridx = 1;
constrMessage.gridy = 7;
constrMessage.gridwidth = 2;
gridbagMessage.setConstraints(messageID, constrMessage);
messageID.add(idLabel);
messageID.add(idField);
f2.add(messageID);
constrMessage.gridx = 1;
constrMessage.gridy = 8;
constrMessage.gridwidth = 2;
gridbagMessage.setConstraints(messageButtons, constrMessage);
messageButtons.add(cancelMessage);
messageButtons.add(sendMessage);
cancelMessage.setActionCommand("Cancel");
cancelMessage.addActionListener(this);
sendMessage.setActionCommand("Send");
sendMessage.addActionListener(this);
f2.add(messageButtons);
f2.setSize(640, 480);
f2.setVisible(true);
}
//To send a buy request to the Saleserver
private void sendMessage()
{
short tst = 0;
boolean send = true;;
if (destField.getText().compareTo("") == 0) {
createLabel.setText("Destination field cannot be empty");
send = false;
} else if (idField.getText().compareTo("") == 0) {
tst = new Short(idField.getText()).shortValue();
if (tst < 0) {
createLabel.setText("ID must be set to a valid positive short value (0-32767)");
}
send = false;
}
if (send == true) {
try {
send(hdrField.getText(), msgField.getText(), destField.getText(), tst);
} catch (Exception e) {
createLabel.setText("Send message failed: " + e);
}
}
}
private void send(String header, String message, String number, short ID) throws Exception
{
out.println("<MSG>\n");
out.println("<TYPE>message</TYPE>\n");
out.println("<HDR>" + header + "</HDR>\n");
out.println("<BODY>" + message + "</BODY>\n");
out.println("<DEST>" + number + "</DEST>\n");
out.println("<ID>" + ID + "</ID>\n");
out.println("</MSG>\n");
out.flush();
}
//To disconnect from the server and clear the current reservations.
private void disconnect()
{
try {
f.dispose(); //Dispose frame
in.close();
out.close();
clientSocket.close();
System.exit(0);
} catch (Exception e)
{
}
}
//Eventhandler, handles what to do when a button is pushed.
public void actionPerformed(ActionEvent event)
{
String happened = event.getActionCommand();
if (happened.equals("Create")){
createMessage();
} else if (happened.equals("Quit")){
disconnect();
} else if (happened.equals("Send")){
sendMessage();
} else if (happened.equals("Cancel")){
f2.dispose();
disconnect();
}
}
//Print a string in the netscape window
public void paint (Graphics message)
{
message.drawString("Application will open in a new window", 20, 20);
}
}