begin process at 2010 02 10 01:10:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

Réseau / Internet

 > 

Erreurs lors de la reception de trames sur une socket


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreurs lors de la reception de trames sur une socket

mardi 23 novembre 2004 à 09:16:59 | Erreurs lors de la reception de trames sur une socket

djeauh

Bonsoir à tous,



je développe en ce moment une application cliente en c# qui communique avec un démon que j'ai crée sur UNIX. Dans mon appli j'ai une instance de l'objet TcpClient qui est chargée d'envoyée et de recevoir les données en provenance ou vers le demon.



Le soucis est que je ne reçoit pas toujours l'ensemble de mes données. Je m'explique : lorsque les réponses du serveur ne sont pas trop longues j'obtient bien toutes les informations. En revanche lorsque les données sont plus volumineuses (environ 30 Ko) je ne reçoit qu'une partie de la réponse et je n'ai le reste que lorsque je place un octet en emission.

Je pense avoir un soucis avec la gestion du buffer mais je ne sais pas comment m'en sortir.



Mon code d'envoi de trames est le suivant:



public string Recoit()

{

string sResultat = "";

byte []Buffer = null;

int NbrElemLus = 0;

NetworkStream Flux = m_ConnectionTcp.GetStream();

StreamReader sr = new StreamReader(Flux);



Buffer = new byte[TAILLEBUFFER];

if(Flux.CanRead)

{

do

{

NbrElemLus = Flux.Read(Buffer,0,TAILLEBUFFER);

sResultat += TabByteVersChaine(Buffer,0,NbrElemLus);

}while(Flux.DataAvailable);

}

else

{

System.Console.Out.WriteLine("Impossible de lire dans le flux : permission refusée");

}

return((String)sResultat.Clone());

}


auriez vous une solution à me proposer. Merci.


:):):):D:D:D:D

:):):):D:D:D:D
samedi 22 mars 2008 à 15:10:33 | Un exemple de code de réception mais j'ai encore un pb

barbie45

Bonjour,S'il y a quelqu'un pourrait m'aider à récuperer mes signaux du pic pour afficher les courbes nécessaires à partir de trames entrants au PC en utilisant un code java., voici le code que j'ai utilisé pour lire mon port série
import javax.comm.*;
import java.util.*;
import java.math.*;
import java.net.*;
import com.sun.comm.Win32Driver;
import java.io.*;

public class Ouvrir_port implements SerialPortEventListener  {
 
 private String portCOM;
    private CommPortIdentifier portID = null; //identifiant du port
    private SerialPort serialPort; //le port série
    private BufferedReader fluxLecture; //flux de lecture du port

 
 /*
  * Methode qui initialise le port série en evenementiel
  */
    public void ModeEvenement(String portCOM) {
  //récupération de l'identifiant du port
  try {
   portID = CommPortIdentifier.getPortIdentifier(portCOM);
  } catch (NoSuchPortException e) {
  }
 
  //ouverture du port
  try {
   serialPort = (SerialPort) portID.open("ModeEvenement", 2000);
  } catch (PortInUseException e) {
  }
 
  //récupération du flux
  try {
   fluxLecture =
    new BufferedReader(
     new InputStreamReader(serialPort.getInputStream()));
  } catch (IOException e) {}
 
  //ajout du listener
  try {
   serialPort.addEventListener(this);
  } catch (TooManyListenersException e) {
  }
  //paramétrage du port
  serialPort.notifyOnDataAvailable(true);
  try {
   serialPort.setSerialPortParams(
    9600,
    SerialPort.DATABITS_8,
    SerialPort.STOPBITS_1,
    SerialPort.PARITY_NONE);
  } catch (UnsupportedCommOperationException e) {}
  System.out.println("port ouvert, attente de lecture ...");
 }
   
    /*
     * Methode qui effectue la lecture de 7 trames sur le port série
     * Une fois la lecture est faite on ferme le flux de lecture et le port COM
     */
    public void ReadSerialPort(){
     int i=7;
     String reponse = new String();
 
  try {
   System.out.println("i="+i);
   while(i!=0){
    System.out.println("On lit sur le port COM\n");
    reponse = (String) fluxLecture.readLine();
    System.out.println(reponse);
    i--;
    System.out.println("i="+i);
   }
  } catch (IOException e) {}
  //fermeture du flux de lecture
  try {
   fluxLecture.close();
  } catch (IOException e) {}
  //fermeture du port COM
  serialPort.close();
 }
 
 public void serialEvent(SerialPortEvent event) {
  //gestion des événements sur le port :
  //on ne fait rien sauf quand les données sont disponibles
    switch (event.getEventType()) {
   case SerialPortEvent.DATA_AVAILABLE :
    this.ReadSerialPort();//si data dispo on lance la lecture
    break;
   default:
    break;//on ne fait rien pour les autres evenements
  }
 }
   
    /*
     * Methode qui scanne tous les ports COM et test si des données viennent du port COm scanné
     */
 public void listPort(){
  Enumeration listePorts = CommPortIdentifier.getPortIdentifiers();
  int typePort;
  String GPSPortCOM;
 
  while (listePorts.hasMoreElements()){
   portID = (CommPortIdentifier) (CommPortIdentifier) listePorts.nextElement();
   if(portID.getPortType()==CommPortIdentifier.PORT_SERIAL){   
      System.out.println("Nom du PORT :"+portID.getName());
      System.out.println("User :"+portID.getCurrentOwner());
      System.out.println("Use ? :"+portID.isCurrentlyOwned());
      System.out.println("Type du PORT :"+portID.getPortType());
      // On lance la gestion des évènements sur portID
    this.ModeEvenement(portID.getName());
   }
  }
 }

 public static void main(String[] args) {
  //initialisation du driver
  Win32Driver w32Driver = new Win32Driver();
  w32Driver.initialize();
 
  Ouvrir_port test = new Ouvrir_port();
  test.listPort();
 }
}
et j'aime bien si vous pouvez m'aidez à sortir le résultat de ce code sur une interface swing!
Merci bien et à bientot!



Cette discussion est classée dans : buffer, données, string, flux, trames


Répondre à ce message

Sujets en rapport avec ce message

données dans textbox [ par gag1983 ] je ne trouve pas l'erreur!je veux mettre des données dans une textbox, sous certaines conditions.J'ai un chiffre de 20 digits au départ qui ne contien NumberFormat et DecimalSeparator [ par Ordinastie ] Bonjour a tous.Voila, j'ai un petit probleme dans mon appli d'exportation de données de SQL Server a postgreSQL lorsque j'ai des 'decimal'.En effet, p Comment récupèrer plusieurs types de données dans un DataSet (string et int) [ par Ginji ] Bonjour, En ce moment, j'effectue une lecture d'une plage de cellules à partir d'un fichier excel en utilisant les interops et un dataset. Il me r simulation de dll en C# [ par fdouieb ] Bonjour, Je vais essayer d'être le plus clair possible. Une application que je nomme APPLI "A" qui est pour moi une boite noire reçoit un flux d'info extraire des données depuis listBox [ par hlayachi ] Bonjour j'ai une application qui lit un flux de données à partir d'un fichier mdb (à l'aide de OleDB), et ensuite elle affiche ce flux dans un listBo technique de sauvegarde données sensibles [ par fcolo ] Bonjour,Je réalise une apllication qui consiste à visualisée le flux vidéo de caméra IP.L'utilisateur doit fournir des paramétres pour réceptionner ce lire un flux xml [ par herve_labenere ] Bonjour,Je conçois actuellement un petit logiciel pour suivre les cours de la Bourse.J'utilise pour cela un webservice (http://www.webservicex.net/sto Datareader et valeur null [ par ducker88 ] Bonjour à tous,Voila mon probleme,Je souhaite recuperer des données d'une base postgresql à l'aide d 'un datareader. Cela fonctionne bien quand je rec Convertir string en float [ par asma86 ] Bonjours à tous,Dans mon application je dois inserer des données dans la base et j'introduit ces données à travers des TextBox or il ya des donnés de Simuler un flux de données. [ par renyone ] Salut à tous. Je vous expose ce que je veux faire : j'ai un certain nombre de données en base que je récupère via une certaine API. Une donnée est car


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales