[ Unix Java ] socket - transfert limité à 256 octets ?!!!

socket - transfert limité à 256 octets ?!!! [ Unix Java ] - Java - Programmation

Marsh Posté le 08-05-2002 à 14:04:25    

Je ne parviens pas à transférer plus de 256 octets à travers mon jeu de sockets. Voici le code du serveur :
 
      ServerSocket server = new ServerSocket(port);
      //server.setSoTimeout(30000);
 
      while(true)
      {
        connection = server.accept();
 
        InputStream in = connection.getInputStream();
        int i, len=0;
        byte line[] = new byte[1024];
 
        do
        {
          i = in.read();
          if(i < 0) throw new IOException("Unexpected EOF from proxy" );
          if(len >= 1024) throw new Exception("ip line too long" );
System.out.write(i);
System.out.println("-----" + len);
          line[len] = (byte) i;
        }
        while(line[len++] != '\n';);
 
        ...
        ...
      }
 
Voici le code du client ...
 
    try
    {
      DataInputStream sysin = new DataInputStream(System.in);
      String msg = null;
      Socket connection = new Socket("toto",22000);
System.out.println(connection.getReceiveBufferSize
());
System.out.println(connection.getSendBufferSize())
;
 
      System.out.println("Enter line :" );
      msg = sysin.readLine();
      BufferedWriter out = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
      out.write(msg+"\r\n\r\n" );
      out.flush();
      while (true);
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
 
Quelqu'un peut m'aider ???
Merci.

Reply

Marsh Posté le 08-05-2002 à 14:04:25   

Reply

Marsh Posté le 08-05-2002 à 14:11:34    

il est vraiment zarb ton code. C'est pas vraiment comme ca que ca fonctionne. C'est quoi le but de if machin > 1024?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 08-05-2002 à 14:15:23    

DarkLord a écrit a écrit :

il est vraiment zarb ton code. C'est pas vraiment comme ca que ca fonctionne. C'est quoi le but de if machin > 1024?  




 
C juste que je peux pas accepter une chaine de plus de 1024, mais là maintenant c pas encore utile...

Reply

Marsh Posté le 08-05-2002 à 14:19:02    

et qu'est ce qui se passe lorsque tu transfères plus de 256 octets exactement?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 08-05-2002 à 14:29:51    

si j'envois la chaine (de 260 caractères)
 
01234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789
0123456789
 
Ca donne ...
 
789
 
Sinon si j'envois  
 
01234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789
 
 
Ca donne ...
 
01234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789

Reply

Marsh Posté le 08-05-2002 à 14:31:21    

PS : J'ai viré la ligne System.out.println("-----" + len);

Reply

Marsh Posté le 08-05-2002 à 14:39:22    

tu supposes que 1 char = 1 bytes ou quoi?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 08-05-2002 à 14:42:15    

oui, c faux ?

Reply

Marsh Posté le 08-05-2002 à 14:48:52    

bin globalement oui et ce n'est certainement pas une assertion classique. Bon je vais jeter un oeil à ton code qui me semble assez foireux
 
hold on


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 08-05-2002 à 14:50:19    

ok je te remercie...
 
je regarde aussi de mon côté.

Reply

Marsh Posté le 08-05-2002 à 14:50:19   

Reply

Marsh Posté le 08-05-2002 à 14:54:05    

Pour le serveur:
 
ServerSocket server = new ServerSocket(port);
//server.setSoTimeout(30000);
while(true) {
  connection = server.accept();
  BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
  String line = in.readLine();
  System.out.println("Received a new request: " + line);
  // Here you can manage line's length, etc.
  ...
}
 
 
Pour le client:
 
remplace out.write par out.writeln


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 08-05-2002 à 15:06:31    

ça donne pareil... marche toujours pas.
 
Sinon je ne vois pas de writeln dans BufferedWriter, j'ai essayé sans. C pareil.
 
Sinon je vais essayer avec un out.newline avant le flush ...

Reply

Marsh Posté le 08-05-2002 à 15:09:44    

pareil :-(
 
Au fait, ça donne la même chose avec telnet... c le code du serveur qui m'inquiète. Le client c t juste pour tester.

Reply

Marsh Posté le 08-05-2002 à 15:17:06    

zarb ton problème. D'apres moi les 2 codes (dark et le tien) sont bons.
 
ca doit être un problème à la con ... t'as essayé de faire marcher ton prog sur une autre machine ? (sous windows par exemple)

Reply

Marsh Posté le 08-05-2002 à 15:19:21    

Ben figure toi que je viens d'essayer sous windows à l'instant... ça marche :-//

Reply

Marsh Posté le 08-05-2002 à 15:22:52    

proxi a écrit a écrit :

Ben figure toi que je viens d'essayer sous windows à l'instant... ça marche :-//  




 
ouep c'est bien un problème à la con ! ;)
 
désolé, mais là je vais ps pouvoir t'aider ...

Reply

Marsh Posté le 08-05-2002 à 15:27:23    

je dois dire que ça me rassure d'un côté...  
@+ thx

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed