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

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [VB.NET] Envoie de fichier avec socket !!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB.NET] Envoie de fichier avec socket !!

n°1028379
fdiedler
http://www.tutoworld.com
Posté le 29-03-2005 à 14:36:59  profilanswer
 

Bonjour, j'ai créer un tchat serveur/client avec les sockets mais je voudrais créer un transfert de fichier ( texte, son, image ) via la socket. En gros comme pour MSN pouvoir envoyer un fichier....
Je connais les etapes :
1) Recuperer le chemin du fichier
2) Ouvrir le fichier
3) Lire les données du fichier
4) Les mettre dans le buffer puis les envoyer dans la socket
5) Fermer le fichier
 
Mais je bloque a l'etape 2 car j'utilise la class STREAM mais il parrait que c'est pour pour les fichier texte....
 
Si quelqu'un pouvais m'aide rou de donner des exmeples, des liens ...
 
Merci bcp

mood
Publicité
Posté le 29-03-2005 à 14:36:59  profilanswer
 

n°1028393
FlorentG
Unité de Masse
Posté le 29-03-2005 à 14:42:54  profilanswer
 

Un FileStream est utilisable pour n'importe quel type de fichier ;)

n°1028450
fdiedler
http://www.tutoworld.com
Posté le 29-03-2005 à 15:11:15  profilanswer
 

et bah avec moi ca marchait pas ...
Regarde j'ai fait ca :
 
 
        Dim fs = New FileStream(FILE_NAME, FileMode.Open, FileAccess.Read)
 
        Dim r As New BinaryReader(fs)
 
        r.Read()
 
        Dim bufferRead() As Byte
 
        bufferRead = r.ReadBytes(CType(fs.Length, Integer))
 
Maintenant bufferRead combien les  données de limage sous forme de bytes mais comment l'envoyer dans la socket??? car l'argument pour envoyer est un truc en STRING :
 
Voici ma fonction Socket.send :
 
Public Sub Send(ByVal Data As [String])
        buffer = Encoding.UTF8.GetBytes(Data)
        sckclient.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, AddressOf SendCallback, sckserver)
    End Sub
 
Merci

n°1028455
FlorentG
Unité de Masse
Posté le 29-03-2005 à 15:14:46  profilanswer
 

C'est quoi ton premier r.read() :??: Et la méthode BeginSend prend des bytes :

Public Function BeginSend( _
   ByVal buffer() As Byte, _
   ByVal offset As Integer, _
   ByVal size As Integer, _
   ByVal socketFlags As SocketFlags, _
   ByVal callback As AsyncCallback, _
   ByVal state As Object _
) As IAsyncResult


 

n°1028475
fdiedler
http://www.tutoworld.com
Posté le 29-03-2005 à 15:30:02  profilanswer
 

Oui je sais je fait un return dans ma fonction comme ca je retourne la valeur de bufferRead. Maintenant je vais appller ma fonction pour envoyer ca : Socket.send("la il faut un argument du type string or moi c'est deja en byte..." )
 
Et si je modifie ma fonction Socket.send en  :

Code :
  1. Public Sub Send(ByVal Data As byte)
  2.         sckclient.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, AddressOf SendCallback, sckserver)
  3.     End Sub


et bah j'ai une erreur...
 
"Une valeur de type 'Tableau 1-dimensionnel de Byte' ne peut pas être convertie en 'byte'."
 
Merci


Message édité par fdiedler le 29-03-2005 à 15:31:48
n°1028486
FlorentG
Unité de Masse
Posté le 29-03-2005 à 15:43:09  profilanswer
 

Regarde les paramètres de ta fonction send :

Public Sub Send(ByVal Data As byte)


Tu lui demande un objet de type byte, alors qu'il faut un tableau :

Public SubSend(ByVal data As Byte())

n°1028509
fdiedler
http://www.tutoworld.com
Posté le 29-03-2005 à 15:50:38  profilanswer
 

Effectivement j'ai plus l'erreur je vais tester et je te repost si jamais y'a un probleme ...
En tt cas merci bcp de ton aide
Fdiedler

n°1028520
fdiedler
http://www.tutoworld.com
Posté le 29-03-2005 à 15:56:02  profilanswer
 

Code :
  1. Public Sub EnvoyerFichier(ByVal msg As Byte())
  2.         sckclient.BeginSend(msg, 0, msg.Length, SocketFlags.None, AddressOf SendCallback, sckserver)
  3.     End Sub


Lors de l'envoie il me dit que la reference object n'est pas définit a l'insistance d'un object ??? ca veur dire quoi? et pourquoi j'ai ce message ?

n°1028522
FlorentG
Unité de Masse
Posté le 29-03-2005 à 15:57:30  profilanswer
 

Doit y avoir un des objets qui a pour valeur Nothing, met un point d'arrêt sur l'appel à BeginSend, et regarde ce qu'il y a dans les différentes variables

n°1028537
fdiedler
http://www.tutoworld.com
Posté le 29-03-2005 à 16:02:55  profilanswer
 

Oui ta raison sckserver vaut nothing...
J'ai fait un test pour un message text et il n'a pas la valeur de nothing...  
Je comprends pas pourquoi ??

Code :
  1. Public Sub Send(ByVal Data As [String])
  2.         buffer = Encoding.UTF8.GetBytes(Data)
  3.         sckclient.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, AddressOf SendCallback, sckserver)
  4.     End Sub


Avec cette fonction je fait transiter tous les messages texte ( ceux que tu envoient quand tu tchat )
 
....

mood
Publicité
Posté le 29-03-2005 à 16:02:55  profilanswer
 

n°1028834
fdiedler
http://www.tutoworld.com
Posté le 29-03-2005 à 18:02:01  profilanswer
 

tien je te file mon adresse MSN ce sera plus facile et puis je pulierais la reponse sur le forum
fdiedler999@hotmail.com

n°1032692
fdiedler
http://www.tutoworld.com
Posté le 01-04-2005 à 18:01:44  profilanswer
 

Comment on fait pour mettre la mension RESOLU ....lol
Dsl je me suis planter de topic au fait il faut aller dans celui : Probleme buffer


Message édité par fdiedler le 01-04-2005 à 18:04:06

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

  [VB.NET] Envoie de fichier avec socket !!

 

Sujets relatifs
Sélection d'un fichier dans une IHM !! (sous vc++ 6)VB - Ouverture d'un fichier Word d'Excel
[Python] Visualisation de fichier HTMLLecture d'un fichier texte contenu dans un JAR
Créer un fichier videMise en cache de fichier CSS sous MSIE[resolu]
question bateau: ecrire un retour ligne dans fichierAccéder à un fichier depuis Access
Renommer un fichier dont on ne connait pas le nom exact[VB.NET] pb recuperation d'une trame TCP
Plus de sujets relatifs à : [VB.NET] Envoie de fichier avec socket !!


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