rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Connexion TCP JAVA

Posté par ibma, le jeudi 9 août 2007 à 21:55:16
bonjour
je suis en train de programmer en utilisant le langage JAVA, trois applications inter connectées entre elles, en mode connecté, c'est à dire en utilisant la connexion TCP.
je voudrai savoir que si c'est normal lorsque une application (station émettrice ) envoie une information de la taille de 50 Kilo Octets, et que la durée de l'envoi est presque instantanée, mais la durée de réception de cette même information par une autre application (station réceptrice ), dure 2 secondes ou un peut plus??? sachant que j'utilise une seule machine (un seul ordinateur ) et par contre une seule carte réseau et une adresse LOUPBACK ( adresse de boucle ) pour tester tout cela.
merci de bien vouloir me répondre.
Configuration: Windows XP
Firefox 2.0.0.6
Répondre à ibma  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Spearhead, le jeudi 9 août 2007 à 22:04:16
Ce n'est pas normal, quelque chose cloche dans ton code, moi je n'ai jamais rencontré ce probleme !
Répondre à Spearhead

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ibma, le vendredi 10 août 2007 à 01:13:43
bonjour
pouvez vous me donner un exemple écrit en java de deux stations, une émettrice et l'autre réceptrice de données en utilisant une connexion TCP????
merci
Répondre à ibma

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Spearhead, le vendredi 10 août 2007 à 01:25:32
Voici un exemple avec deux fichiers, qui s'appel a tort serveur et client mais tous les deux échanges des données a tour de role, l'un envoi la date et l'autre le mot "test" ... a lancer simulatnément dans deux instances différentes, ce sont mes fichiers de TP d'IUT donc faut etre indulgent sur le code lol je n'ai pas le temps d'y regarder en détails

===================================

serveur.java

===================================

package I6.TP3;

import java.io.BufferedReader;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Date;
import java.io.PrintStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;

public class Serveur {

/** Creates a new instance of Reception */
public static void reception() {
int port = 40000;
try {
ServerSocket ecoute = new ServerSocket(port);
while(true){
Socket echange = ecoute.accept();



Date dat = new Date();
PrintStream stream = new PrintStream(echange.getOutputStream());
stream.println(dat.toString());

InputStreamReader stream2 = new InputStreamReader(echange.getInputStream());
BufferedReader buf2 = new BufferedReader(stream2);
System.out.println(buf2.readLine());

System.out.println(echange.getInetAddress().getHostAddress()­);
buf2.close();
}

} catch (SocketException ex) {
ex.printStackTrace();
}
catch (IOException ex) {
ex.printStackTrace();
}


}
public static void main(String [] argv) {

reception();
}
}


======================================

client.java


======================================

package I6.TP3;
import java.io.IOException;
import java.net.Socket;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
import java.io.*;
import java.io.PrintStream;
/**
*
* @author SpeaRHeaD
*/
public class Client {

public static void emission(){
int port = 40000;
InetAddress adr;
try {
adr = InetAddress.getByName("127.0.0.1");
Socket soket = new Socket(adr,port);



InputStreamReader stream = new InputStreamReader(soket.getInputStream());
BufferedReader buf2 = new BufferedReader(stream);
System.out.println(buf2.readLine());

PrintStream stream2 = new PrintStream(soket.getOutputStream());
stream2.println("test");

stream2.close();

soket.close();

} catch (UnknownHostException ex) {
ex.printStackTrace();
}
catch (SocketException ex) {
ex.printStackTrace();
}
catch (IOException ex) {
ex.printStackTrace();
}

}


public static void main(String [] argv) {
emission();

}

}
Répondre à Spearhead

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ibma, le vendredi 10 août 2007 à 02:10:14
bonjour
merci de votre réponse et votre gentillesse de m'avoir donné ce code.
j'ai fait exactement la même chose mais en envoyant 50 Kilo Octets d'information. j'ai mis une boucle, à l'intérieur de cette boucle, j'ai mis un code qui consiste à envoyer une chaine de caractère de 255 octets, parce que la socket à une capacité de 255 octets. bein j'ai toujours le même problème.
si vous voulez, je peux vous donner le code des deux applications (émettrice et réceptrice).
merci.
Répondre à ibma

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ibma, le samedi 11 août 2007 à 01:58:36
bonjour
est qu'il aurait un problème de paramétrage de la carte réseau pour booster le débit?????????
merci
Répondre à ibma

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Tr0yL, le samedi 11 août 2007 à 02:01:21
Tu te trompes le buffer de reception ou d'émission d'un socket par défaut de la pile TCP/IP a une taille 65535 octets ( représenté par les macros : SO_RCVBUF et SO_SNDBUF )
Répondre à Tr0yL

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 ibma, le samedi 11 août 2007 à 02:19:06
bonjour
vous pouvez me dire comment je vais faire pour savoir si la taille de la socket est vraiment 65535??
merci
Répondre à ibma