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.io.ObjectOutputStream;
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.io.ObjectInputStream;
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
Andrew T. - 04 Apr 2007 15:26 GMT
(applet)
>...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?
You might try removing browsers from the loop,
(and will possibly get a more consistent result)
by launching the applet using Web Start.
<http://www.physci.org/jws/#jtest>
HTH

Signature
Andrew Thompson
http://www.athompson.info/andrew/
Duncan Jones - 04 Apr 2007 15:36 GMT
> (applet)
>
[quoted text clipped - 16 lines]
>
> Message posted via JavaKB.comhttp://www.javakb.com/Uwe/Forums.aspx/java-general/200704/1
Sadly, this HAS to occur within a browser, as it's part of a larger
automated program that needs to determine when a web page has loaded...
Duncan Jones - 04 Apr 2007 22:46 GMT
> > (applet)
>
[quoted text clipped - 19 lines]
> Sadly, this HAS to occur within a browser, as it's part of a larger
> automated program that needs to determine when a web page has loaded...
For whatever reason, this problem seems to have fixed itself. Which
naturally worries me a bit, but I'll just cross my fingers and see...