Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1056 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  socket Client/Serveur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

socket Client/Serveur

n°1943190
man_u
Posté le 22-11-2009 à 13:05:19  profilanswer
 

Bjr tous le monde,
je veux faire un programme de sorte que le serveur lit a partir d'un fichier(c:/Test.txt) et envoie les donneés au client ,et ce dernier les écrit dans un autre fichier(c:/info2.txt).  
 
Le probléme qui ce pose c'est que je n'arrive pas a savoir quand est ce que le client arrete de reçevoir , vous me dite quand il ne reçoi rien biensuur mais comment le faire dans un programme pareille?!
 
 
voila le mes codes source
 
 
Client:

Code :
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net;
  6. using System.Net.Sockets;
  7. using System.IO;
  8. namespace Ecriture_Client
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             //*********Partie Client
  15.             TcpClient c = new TcpClient("localhost", 8080);
  16.             Stream str = c.GetStream();
  17.             byte[] b=new byte[100];
  18.             //*********Partie Ecriture
  19.             string ligne = null; // une ligne de texte
  20.             StreamWriter fluxInfos = null; // le fichier texte
  21.             try
  22.             {
  23.                 // création du fichier texte
  24.                 fluxInfos = new StreamWriter("c:/infos2.txt" );
  25.                     // boucle tant que la ligne reçu est non vide
  26.                     while(str.Read(b,0,50)!=-1)
  27.                     {
  28.                             ligne = Encoding.ASCII.GetString(b);
  29.                             Console.WriteLine(ligne);
  30.                             // écriture ligne dans fichier texte;
  31.                             fluxInfos.WriteLine(ligne);
  32.                     }
  33.             }
  34.             catch (Exception e)
  35.             {
  36.                 Console.WriteLine("L'erreur suivante s'est produite : " + e.Message);
  37.             }
  38.             Console.ReadLine();
  39.         }
  40.     }
  41. }


 
Serveur:

Code :
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Net;
  7. using System.Net.Sockets;
  8. namespace Lecture
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             //*****************Partie Serveur**********
  15.             IPHostEntry iphe = Dns.Resolve("localhost" );
  16.             IPEndPoint ipep = new IPEndPoint(iphe.AddressList[0], 8080);
  17.             TcpListener s = new TcpListener(ipep);
  18.             s.Start();
  19.             TcpClient c = s.AcceptTcpClient();
  20.             Stream str = c.GetStream();
  21.             byte[] b;
  22.             //***********Partie lecture************
  23.             String ligne = null;
  24.             StreamReader fluxInfos = null;
  25.             // lecture contenu du fichier Test.txt
  26.             try
  27.             {
  28.                 fluxInfos = new StreamReader("c:/Test.txt" );
  29.                     ligne = fluxInfos.ReadLine();
  30.                     while (ligne != null)
  31.                     {
  32.                         Console.WriteLine(ligne);
  33.                         b = Encoding.ASCII.GetBytes(ligne);
  34.                         str.Write(b, 0, b.Length);
  35.                         ligne = fluxInfos.ReadLine();
  36.                     }
  37.             }
  38.             catch (Exception e)
  39.             {
  40.                 Console.WriteLine("L'erreur suivante s'est produite : " + e.Message);
  41.             }
  42.             System.Console.ReadLine();
  43.         }
  44.     }
  45. }

mood
Publicité
Posté le 22-11-2009 à 13:05:19  profilanswer
 

n°1943214
dsoft
Posté le 22-11-2009 à 15:43:36  profilanswer
 

Tu peux essayer d'utiliser un caractère spécial pour indiquer la fin.


---------------
www.blurk.fr
n°1943224
man_u
Posté le 22-11-2009 à 16:18:12  profilanswer
 

oui je peux mais ce n'est pas une trés bonne solution. si j'utiliserai $
 et j'aurai un $ dans mon texte sa va etre un probléme.

n°1943239
dsoft
Posté le 22-11-2009 à 17:33:21  profilanswer
 

Tu peux utiliser un caractère spécial non imprimable, il me semble qu'il y a un caractère pour signaler la fin d'un fichier (EOF).


---------------
www.blurk.fr
n°1943248
man_u
Posté le 22-11-2009 à 17:59:15  profilanswer
 

ne sois pas trés étonner mais je connais pas le caractére spécial non imprimable . sa veux dire quoi ?

n°1943252
dsoft
Posté le 22-11-2009 à 18:20:14  profilanswer
 

En gros il existe des caractère spéciaux qui ne sont pas imprimable, jette un coup d'œil du coté de la table ASCII.


---------------
www.blurk.fr
n°1943261
moi23372
Posté le 22-11-2009 à 19:11:02  profilanswer
 

en fait tu n'as en principe rien a faire sachant que tu travailles avec des flux.  
la méthode "Read" renvoit "0" quand le flux est terminé:
cfr MSDN:
The read method return the total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
 
http://msdn.microsoft.com/en-us/li [...] .read.aspx


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
n°1943264
man_u
Posté le 22-11-2009 à 19:29:04  profilanswer
 

j'ai fait un nouveau programme qui me permet de lire ligne par ligne au niveau du Serveur ( StreamReader/StreamWriter ) et l'envoyé au client , le probléme qui ce pose c'est que le client ne sais toujours pas quand il s'arrete , il tourne dans une boucle infinie par contre le serveur s'arrete à la fin du fichier:
Client:

Code :
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net;
  6. using System.Net.Sockets;
  7. using System.IO;
  8. namespace Ecriture_Client
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             //*********Partie Client
  15.             TcpClient c = new TcpClient("localhost", 8080);
  16.             //*********Partie Ecriture
  17.             NetworkStream networkStream = c.GetStream();
  18.             StreamReader streamReader = new StreamReader(networkStream);
  19.             String theString;           
  20.             StreamWriter fluxInfos = null;
  21.             try
  22.             {
  23.                 // création du fichier texte
  24.                 fluxInfos = new StreamWriter("c:/infos2.txt" );
  25.                 theString = streamReader.ReadLine();
  26.                     // boucle tant que la ligne reçu est non vide
  27.                 while (theString!="" )
  28.                     {
  29.                         Console.WriteLine(theString);
  30.                         theString = streamReader.ReadLine();
  31.                          fluxInfos.WriteLine(theString);
  32.                          
  33.                     }
  34.             }
  35.             catch (Exception e)
  36.             {
  37.                 Console.WriteLine("L'erreur suivante s'est produite : " + e.Message);
  38.             }
  39.             streamReader.Close();
  40.             networkStream.Close();
  41.             c.Close();
  42.              
  43.         }
  44.     }
  45. }


Serveur:

Code :
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Net;
  7. using System.Net.Sockets;
  8. namespace Lecture
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             //*****************Partie Serveur**********
  15.             IPHostEntry iphe = Dns.Resolve("localhost" );
  16.             IPEndPoint ipep = new IPEndPoint(iphe.AddressList[0], 8080);
  17.             TcpListener s = new TcpListener(ipep);
  18.             s.Start();
  19.             TcpClient c = s.AcceptTcpClient();
  20.             //***********Partie lecture************
  21.             NetworkStream networkStream = c.GetStream();
  22.             StreamWriter streamWriter = new StreamWriter(networkStream);
  23.             streamWriter.AutoFlush = true;
  24.             String ligne = null;
  25.             StreamReader fluxInfos = null;
  26.             // lecture contenu du fichier Test.txt
  27.             try
  28.             {
  29.                 fluxInfos = new StreamReader("c:/Test.txt" );
  30.                     ligne = fluxInfos.ReadLine();
  31.                     while (ligne != null)
  32.                     {
  33.                         Console.WriteLine(ligne);
  34.                         streamWriter.WriteLine(ligne);
  35.                         ligne = fluxInfos.ReadLine();
  36.                     }
  37.             }
  38.             catch (Exception e)
  39.             {
  40.                 Console.WriteLine("L'erreur suivante s'est produite : " + e.Message);
  41.             }
  42.             networkStream.Close();
  43.             streamWriter.Close();
  44.             //c.Close();
  45.             System.Console.ReadLine();
  46.         }
  47.     }
  48. }


Message édité par man_u le 22-11-2009 à 19:45:47

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  socket Client/Serveur

 

Sujets relatifs
Socket - Client Serveurreconnection client sur serveur en c avec socket
[PHP]Recuperer l'ip d'un client connecté sur un serveur socket.Socket communication Appli Client/Serveur
[Thread/Socket] Serveur et client à la foisJAVA - Client/Serveur sous Eclipse (RMI ou Socket ?)
Envoi de donnée du serveur au client par socket[socket] echange de messages entre client et serveur....
Client-serveur avec socket en C (client) vers PHP (serveur)Créer un serveur socket pour un client flash
Plus de sujets relatifs à : socket Client/Serveur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR