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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[VB.NET] Conversions de données ...

n°1039079
fdiedler
http://www.tutoworld.com
Posté le 07-04-2005 à 16:39:19  profilanswer
 

Reprise du message précédent :
J'ai vu sa et je trouve que c'est plus difficile...
De plus c'est un autre moyen de communication reseau donc j'utiliserais plus les sockets. Or ca fait 2 mois que je developpe mon Chat et donc j'ai pas trop envie de recommencer tout... Donc je vais essayer de trouver une solution...
 
Pour l'encodage j'ai utiliser ca :
 
            Dim ascii As New ASCIIEncoding
            Dim decode As String = ascii.GetString(buffer)
 
Mais bon a mon avis c'est pas bon. Pour le code d'envoie de fichier y'a pas de probleme sinon il va bien dans le Case 30 : 'et puis la j'apelle ma class qui endecode les string en byte puis le ecrit dans un autre ficher.
 
Mais bon le resultat n'est pas la.
 
Faudrais peut etre que je t'envoie mes class par mail complete pour que tu comprenne mieux mon systeme?


Message édité par fdiedler le 07-04-2005 à 16:44:43
mood
Publicité
Posté le 07-04-2005 à 16:39:19  profilanswer
 

n°1039083
FlorentG
Posté le 07-04-2005 à 16:40:39  profilanswer
 

Non c'est bon, j'ai pigé le truc :) Enfin c'était pour dire que la manière préférable de communiquer, c'est la sérialisation ;)

n°1039282
fdiedler
http://www.tutoworld.com
Posté le 07-04-2005 à 19:31:53  profilanswer
 

FlorentG a écrit :

Non c'est bon, j'ai pigé le truc :) Enfin c'était pour dire que la manière préférable de communiquer, c'est la sérialisation ;)


 
Qu'est ce que tu entends par la ?

n°1039429
FlorentG
Posté le 07-04-2005 à 22:02:45  profilanswer
 

Comme dit, tu envoi carrément un objet. Donc tu te fais une classe ou une structure qui contient tout ce qu'il faut pour envoyer un message, et tout se fait de manière transparente. Tu envoie l'objet d'un côté, tu le réception de l'autre, sans passer par des String ou autres trucs :)

n°1039441
fdiedler
http://www.tutoworld.com
Posté le 07-04-2005 à 22:21:12  profilanswer
 

oui c bien beau tout ca mais ca marche pas pour les fichiers.. je vais essayer autre chose... on verra bien !!!

n°1040965
fdiedler
http://www.tutoworld.com
Posté le 09-04-2005 à 08:52:46  profilanswer
 

Donc j'ai changer de methode, la je les envoie par parquets de 4096 ( ca reglera la probleme de la taille du buffer ):
Serveur :

Code :
  1. Public Function ChargeFichier(ByVal fichier As String)
  2.         Dim temp As String
  3.         Dim BlockSize As Integer
  4.         FileOpen(1, fichier, OpenMode.Binary, OpenAccess.Read)
  5.         BlockSize = 4096
  6.         Do While Not EOF(1)
  7.             temp = Space(BlockSize)
  8.             FileGet(1, temp)
  9.             socket.Send(temp)
  10.             System.Windows.Forms.Application.DoEvents()
  11.         Loop
  12.         socket.Send("end" )
  13.         FileClose(1)
  14.     End Function


Client :

Code :
  1. Public Sub Receivedata(ByRef temp As String, ByRef FileNametoSave As String)
  2.         If CheckFileAva = False Then
  3.             FileOpen(2, FileNametoSave, OpenMode.Binary, OpenAccess.Write)
  4.             CheckFileAva = True
  5.         ElseIf CheckFileAva = True Then
  6.             System.Windows.Forms.Application.DoEvents()
  7.         End If
  8.         If temp = "end" Then
  9.             FileClose(2)
  10.             CheckFileAva = False
  11.             MsgBox("Transfer Success", , "File  Transfert" )
  12.         Else
  13.             FilePut(2, temp)
  14.         End If
  15.     End Sub


Et pour l'appeller :

Code :
  1. bytesRead = sckclient.EndReceive(asyncResult)
  2.                     Dim mesreceive As String = Encoding.UTF8.GetString(bufferread)
  3.                     Call envoie.Receivedata(mesreceive, ("C:\florent.jpg" ))


Mais voila du coté serveur, ca a l'air de bien fonctionner : il envoit effectivement par paquets de 4096 et une fois arrivé a la fin du fichier il envoie "end". Mais du coté client, il recoit pas tout les données... si je met un point d'arret et bah il recoit les 4096 premieres et apres il recoit plus rien ( temp = nothing )... Je comprends pas pourquoi???? Peut etre qu'il faut faire une boucle aussi de l'autre coté mais si c'est ca je ne sais aps comment faire ???
 
Merci


Message édité par fdiedler le 09-04-2005 à 08:53:45
n°1041045
FlorentG
Posté le 09-04-2005 à 11:43:25  profilanswer
 

Déjà fait gaffe aux méthodes FileOpen qui n'existent plus vraiment. Elles sont là pour être compatibles VB6, mais faut plutôt utiliser les classe de System.IO.

n°1041420
fdiedler
http://www.tutoworld.com
Posté le 09-04-2005 à 17:24:36  profilanswer
 

Oui  justement car fileGet et filePut on un comportement different donc ca plante... mais je sais pas comment envoyer par paquet avec la class System.IO..??

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Ouvrir un fichier Excel en VB.NETDrag souris en C++ .NET
[ASP.NET] Conversion DOC en PDF (gratuit)[ Pocket PC ] Installer une base de données
(débutant) enregistrer des données via un formulaireReactualiser les données d'un formulaire après les avoir modifiées
Les bases de données et le language CAfficher des données en 2 collones via un tableau
[VB.NET] Créer tchat multiclient[VB.NET] Envoie de fichier avec socket !!
Plus de sujets relatifs à : [VB.NET] Conversions de données ...


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