Ya sure. Here’s the code…
Here’s the main for client.
package grid
import java.awt.*;
import java.awt.event.*;
public class Main
{
public static void main(String[] args)
{
GridClient frame = new GridClient();
frame.setTitle("Grid Client");
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
frame.addWindowListener(l);
frame.pack();
frame.setVisible(true);
frame.listenSocket();
}
}
Here’s the code for my client
package grid;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.net.*;
import java.io.*;
public class GridClient extends JFrame implements ActionListener
{
JLabel text, clicked, error;
JButton button;
JPanel panel;
JTextField textField;
Socket socket = null;
PrintWriter out = null;
BufferedReader in = null;
GridClient()
{
text = new JLabel("Text to send over socket: ");
error = new JLabel("");
textField = new JTextField(20);
button = new JButton("Send");
button.addActionListener(this);
panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBackground(Color.WHITE);
getContentPane().add(panel);
panel.add("North", text);
panel.add("East", error);
panel.add("Center", textField);
panel.add("South", button);
}
public void actionPerformed(ActionEvent event)
{
Object source = event.getSource();
if (source == button)
{
String text = textField.getText();
out.println(text);
textField.setText(new String(""));
}
}
public void listenSocket()
{
try
{
socket = new Socket("\\Router IP Address\\", 80);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (UnknownHostException e) {
error.setText("Unknown host.");
} catch (IOException e) {
error.setText("Can not establish connection.");
}
}
}
Here’s the code for my server.
package gridserver;
import java.net.*;
import java.io.*;
import java.util.*;
import java.security.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
public class GridServer extends JFrame implements ActionListener
{
JButton button;
JLabel label = new JLabel("Text received over socket: ");
JPanel panel;
JTextArea textArea = new JTextArea();
ServerSocket server = null;
Socket client = null;
BufferedReader in = null;
PrintWriter out = null;
String line;
GridServer()
{
button = new JButton("Receive");
button.addActionListener(this);
panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBackground(Color.WHITE);
getContentPane().add(panel);
panel.add("North", label);
panel.add("Center", textArea);
panel.add("South", button);
}
public void actionPerformed(ActionEvent event)
{
Object source = event.getSource();
if (source == button)
{
textArea.setText(line);
System.out.println(line);
}
}
public void listenSocket()
{
try
{
server = new ServerSocket(19999);
} catch (IOException e) {}
try
{
client = server.accept();
} catch (IOException e) {}
try
{
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
} catch (IOException e) {}
while (true)
{
try
{
line = in.readLine();
} catch (IOException e) {}
}
}
public void finalize()
{
try
{
in.close();
out.close();
server.close();
} catch (IOException e) {}
}
public static void main(String[] args)
{
GridServer frame = new GridServer();
frame.setTitle("Grid Server");
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
frame.addWindowListener(l);
frame.pack();
frame.setVisible(true);
frame.listenSocket();
}
}
And I’ve already set up the router so port forwarding works. Anything that comes in on port 80 is forwarded to my computer’s port 19999. I’ve even opened my port 19999 as well on my computer (so no firewall should be there). What the heck is the problem then?