Socket-timeout-Problem

  • Themenstarter Themenstarter MeinerEiner_80
  • Beginndatum Beginndatum
M

MeinerEiner_80

Servus!
Wie bereits in nem anderem Thread gesagt, arbeite ich im Moment mit JxtaSockets
http://platform.jxta.org/nonav/java/api/net/jxta/socket/JxtaSocket.html
Möglicherweise hat mein Problem damit nichts zu tun, und es lässt sich auf allgemeine Sockets beschränken.
Wenn ich mich zu einem Socket verbinde, schliesst dieser die Verbindung nach 60 Sekunden und wirft folgende Exception ( auf Serverseite):
Code:
java.io.IOException: Read timeout reached
Hier mal der Code dazu (Clientseite)
Code:
public void createNewConnection(PipeAdvertisement advertisement, String idString) {
JxtaSocket socket;
        try {
            socket = new JxtaSocket(this.camNetGroup,null,advertisement,0,true);
            socket.setOutputStreamBufferSize(65536);
            OutputStream out = socket.getOutputStream();
            byte[] payload = new String("mal zum test").getBytes();
            long t0 = System.currentTimeMillis();
            for (int i = 0; i < 300; i++) {
                Thread.sleep(5000);
                out.write(payload, 0, payload.length);
                out.flush();
            }
        }
        catch(Exception e){}
        }
    }
Serverseite: Server
Code:
public void run(){
try {
            JxtaServerSocket serverSocket = new JxtaServerSocket(camNetGroup, this.pipeAdv, 10);
            serverSocket.setSoTimeout(0);
        } catch (IOException e) {
            e.printStackTrace();
        }
        while (true) {
            try {
                JxtaSocket socket = new JxtaSocket();
                //socket.create(true);
                socket = ((JxtaSocket) (serverSocket.accept()));
                //socket.create(true);
                //socket.setSoTimeout(0);
                if (socket != null) {
                    Thread thread = new Thread(new ConnectionHandler(socket));
                    thread.start();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
Serverseite : ConnectionHandler
Code:
public class ConnectionHandler implements Runnable{
    JxtaSocket socket;
    public ConnectionHandler(JxtaSocket socket){
        this.socket = socket;
        
    }
    
    public void run(){
        try{
           InputStream in = socket.getInputStream();
            while(true){
                byte[] b = new byte[4096];
                in.read(b);
                System.out.println("Habe folgendes erhalten: "+new String(b));
            }
        }
            catch (IOException e) {
                e.printStackTrace();
          }
    }
Die JxtaSockets haben einen Default-timeout von 60 Sekunden. Daher auch die Exception. Nur lässt sich aber mit socket.setSoTimeout(0); kein unendlicher Timeout zuweisen. Die Verbindung würde sofort unterbrochen werden. Da die Verbindung aber theoretisch sehr lange andauern kann, würd ich aber genau sowas brauchen. Die keepAlive() Methode, sofern sie denn was helfen würde, wird von JxtaSockets nicht unterstüzt.
Jemand ne Idee?

*grüssle*
MeinerEiner




Edit:
-------------------------------------------------
Hat sich erledigt.
War ein JXTA Problem. Wurde erst in der neusten Release gefixt.









------------------------------
 
Zuletzt bearbeitet von einem Moderator:
Zurück