Page 1 sur 1

Problème avec un client socket

Publié : 26 sept. 2006, 15:44
par aure
Bonjour,

Ca fait plusieurs jours que je me casse la tête et tout conseil serait grandement apprécié :)

J' essaie d'utiliser Firefox comme client connecté à une socket.
Pour cela j'ai à peine modifié l'exemple donné sur http://www.xulplanet.com/tutorials/mozsdk/sockets.php .

Le serveur (qui vient d'un programme écrit en Prolog) accepte bien la connection du client mais ne recoit pas la requète à moins que je ne ferme totalement Firefox... Ce qui n'est pas très pratique :?

Dans l'exemple donné sur xulplanet "flush" n'est pas utilisé et je ne sais pas si c'est un oubli. Néanmoins que je l'utilise ou non après "write" ne change rien à mon problème.

Merci de votre aide,
Aurelien

PS:voici le code:

Code : Tout sélectionner

  var p = 56459; 
   var host = "127.0.0.1"; 
   var outputData = "write('hullo')."; 
 
   var transportService = 
     Components.classes["@mozilla.org/network/socket-transport-service;1"] 
       .getService(Components.interfaces.nsISocketTransportService); 
   var transport = transportService.createTransport(null,0,host,p,null); 
 
   var outstream = transport.openOutputStream(0,0,0); 
   var len = outputData.length; 
   outstream.write(outputData,len); 
   outstream.flush(); 
 
   var instream = transport.openInputStream(0,0,0); 
   var scriptablestream = Components.classes["@mozilla.org/scriptableinputstream;1"] 
     .createInstance(Components.interfaces.nsIScriptableInputStream); 
   scriptablestream.init(instream); 
 
 
 var dataListener = { 
       data : "", 
       onStartRequest: function(request, context){}, 
       onStopRequest: function(request, context, status){ 
         instream.close(); 
          outstream.close(); 
       }, 
       onDataAvailable: function(request, context, inputStream, offset, count){ 
         this.data += instream.read(count); 
       }, 
     }; 
 
  var pump = Components.classes["@mozilla.org/network/input-stream-pump;1"]. 
                createInstance(Components.interfaces.nsIInputStreamPump); 
   pump.init(instream, -1, -1, 0, 0, true); 
   pump.asyncRead(dataListener,null);

Message envoyé avec : Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.2 (like Gecko) Kubuntu 6.06 Dapper