Re: Help wiith input/output of jar
In article
<4c1b3fc4-16d8-45e1-87a8-b896ebcfb4ba@r36g2000vbn.googlegroups.com>,
bH <bherbst65@hotmail.com> wrote:
I want to make a program into a jar that makes the input and output
visible when executing the jar. I have Windows XP. I have a program
that runs successfully,but not in the jar form, using these lines of
code:
.....
BufferedReader userIn = new BufferedReader(
new InputStreamReader(System.in));
out = new PrintWriter(theSocket.getOutputStream());
System.out.println("Connected to echo server");
......
When I use the jar form, execute it, the page on which to write the
input and output are not visible. Requesting advice, please.
Maybe you can use something like this. I haven't tried it on Windows,
but I'd appreciate hearing your results. I think XP has a telnet client,
but PuTTY should work, too:
<code>
package net;
import java.awt.*;
import java.awt.event.*;
import java.io.PrintWriter;
import java.net.*;
import java.util.Scanner;
import javax.swing.*;
public class EchoServer implements ActionListener, Runnable {
private static final int PORT = 12000;
private final JTextField tf = new JTextField(25);;
private final JTextArea ta = new JTextArea(15, 25);;
private final JButton send = new JButton("Send");
private volatile PrintWriter out;
private Scanner in;
private Thread listener;
public EchoServer() {
JFrame f = new JFrame("Echo Server");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getRootPane().setDefaultButton(send);
f.add(tf, BorderLayout.NORTH);
f.add(new JScrollPane(ta), BorderLayout.CENTER);
f.add(send, BorderLayout.SOUTH);
f.setLocation(300, 300);
f.pack();
f.setVisible(true);
send.addActionListener(this);
ta.setLineWrap(true);
ta.setWrapStyleWord(true);
display("Please telnet to port " + PORT);
listener = new Thread(this, "Listener");
}
public void start() {
listener.start();
}
@Override
public void actionPerformed(ActionEvent ae) {
String s = tf.getText();
if (out != null) out.println(s);
display(s);
tf.setText("");
}
@Override
public void run() {
try {
ServerSocket ss = new ServerSocket(PORT);
Socket socket = ss.accept();
in = new Scanner(socket.getInputStream());
out = new PrintWriter(socket.getOutputStream(), true);
while (true) {
display(in.nextLine());
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void display(String s) {
ta.append(s + "\u23CE\n");
ta.setCaretPosition(ta.getDocument().getLength());
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new EchoServer().start();
}
});
}
}
</code>
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>