socket - transfert limité à 256 octets ?!!! [ Unix Java ] - Java - Programmation
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?
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...
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?
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
Marsh Posté le 08-05-2002 à 14:31:21
PS : J'ai viré la ligne System.out.println("-----" + len);
Marsh Posté le 08-05-2002 à 14:39:22
tu supposes que 1 char = 1 bytes ou quoi?
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
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
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 ...
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.
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)
Marsh Posté le 08-05-2002 à 15:19:21
Ben figure toi que je viens d'essayer sous windows à l'instant... ça marche :-//
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 ...
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.