D
Duncan Jones
Hi,
I'm trying to write an Java applet that will send an object, via a TCP
socket, to a Java application running on the same machine. It works
in Opera and Mozilla, but it doesn't work in Firefox - the Java
application appears to receive an incoming connection, but never
actually reads the object.
Any ideas how to resolve this problem?
Code:
/////////////////////// APPLET ////////////////////////////
import java.applet.Applet;
import java.io.BufferedOutputStream;
import java.ibjectOutputStream;
import java.net.Socket;
public class AppletClient extends Applet {
private Socket socket;
private ObjectOutputStream oos;
public void start() {
System.out.println("Hello there!");
try {
String host = getCodeBase().getHost();
socket = new Socket("127.0.0.1", 55000);
oos = new ObjectOutputStream(new
BufferedOutputStream(socket.getOutputStream()));
TestObject t = new TestObject("Hello!");
oos.writeObject(t);
oos.flush();
oos.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
/////////////////////// APPLICATION ////////////////////////////
import java.io.BufferedInputStream;
import java.ibjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
private static ServerSocket serv;
private static Socket sock;
private Server() {
}
public static void main(String[] args) {
try {
serv = new ServerSocket(55000);
System.out.println("Server listening on port " +
serv.getLocalPort());
sock = serv.accept();
System.out.println("Received connection: " +
sock.getInetAddress()
+ ":" + sock.getPort());
ObjectInputStream ois = new ObjectInputStream(new
BufferedInputStream(sock.getInputStream()));
System.out.println("Opened input stream. Attemping to
read object.");
TestObject t = (TestObject) ois.readObject();
ois.close();
t.print();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
/////////////////////// OBJECT TO SEND ////////////////////////////
import java.io.Serializable;
public class TestObject implements Serializable {
private String s;
public TestObject(String s) {
this.s = s;
}
public void print() {
System.out.println(s);
}
}
Thanks,
Duncan Jones
I'm trying to write an Java applet that will send an object, via a TCP
socket, to a Java application running on the same machine. It works
in Opera and Mozilla, but it doesn't work in Firefox - the Java
application appears to receive an incoming connection, but never
actually reads the object.
Any ideas how to resolve this problem?
Code:
/////////////////////// APPLET ////////////////////////////
import java.applet.Applet;
import java.io.BufferedOutputStream;
import java.ibjectOutputStream;
import java.net.Socket;
public class AppletClient extends Applet {
private Socket socket;
private ObjectOutputStream oos;
public void start() {
System.out.println("Hello there!");
try {
String host = getCodeBase().getHost();
socket = new Socket("127.0.0.1", 55000);
oos = new ObjectOutputStream(new
BufferedOutputStream(socket.getOutputStream()));
TestObject t = new TestObject("Hello!");
oos.writeObject(t);
oos.flush();
oos.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
/////////////////////// APPLICATION ////////////////////////////
import java.io.BufferedInputStream;
import java.ibjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
private static ServerSocket serv;
private static Socket sock;
private Server() {
}
public static void main(String[] args) {
try {
serv = new ServerSocket(55000);
System.out.println("Server listening on port " +
serv.getLocalPort());
sock = serv.accept();
System.out.println("Received connection: " +
sock.getInetAddress()
+ ":" + sock.getPort());
ObjectInputStream ois = new ObjectInputStream(new
BufferedInputStream(sock.getInputStream()));
System.out.println("Opened input stream. Attemping to
read object.");
TestObject t = (TestObject) ois.readObject();
ois.close();
t.print();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
/////////////////////// OBJECT TO SEND ////////////////////////////
import java.io.Serializable;
public class TestObject implements Serializable {
private String s;
public TestObject(String s) {
this.s = s;
}
public void print() {
System.out.println(s);
}
}
Thanks,
Duncan Jones