mpjp57
Messages postés18Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention23 mai 2008
-
24 avril 2008 à 15:05
mpjp57
Messages postés18Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention23 mai 2008
-
5 mai 2008 à 16:14
Bonjour a tous je me permet de faire apel a vos connaissances car g un probleme. J'ai créé un programme sur VB.net qui ouvre une connection avec un serveur voila le programme en VB.net :
Public Class Form1
Const portNumber As Integer = 8080
Dim tcpListener As New Net.Sockets.TcpListener(portNumber)
Public ServerFlag As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = "Server is disabled"
ServerFlag = 0
Timer1.Interval = 100
Timer1.Enabled = True
'Label2.Text = Net.IPAddress
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If ServerFlag = 0 Then
ServerFlag = 1
Button1.Text = "Stop server"
' Must listen on correct port- must be same as port client wants to connect on.
tcpListener.Start()
Label1.Text = "Server is enabled, wait for client!"
Else
ServerFlag = 0
Button1.Text = "Start server"
tcpListener.Stop()
Label1.Text = "Server is disabled"
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If ServerFlag = 1 Then
' Only if pending connection
If (tcpListener.Pending = True) Then
Timer1.Enabled = False
'Accept
Dim tcpClient As Net.Sockets.TcpClient = tcpListener.AcceptTcpClient()
Label1.Text = "Connection accepted!"
' Get the stream
Dim networkStream As Net.Sockets.NetworkStream = tcpClient.GetStream()
' Read the stream into a byte array
Dim bytes(tcpClient.ReceiveBufferSize) As Byte
networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
' Return the data received from the client to the console.
Dim clientdata As String = System.Text.ASCIIEncoding.ASCII.GetString(bytes)
MsgBox("Client sent: " + clientdata)
Dim responseString As String = "Connected to server ... please wait"
Dim sendBytes As [Byte]() = System.Text.ASCIIEncoding.ASCII.GetBytes(responseString)
networkStream.Write(sendBytes, 0, sendBytes.Length)
Dim File2send As System.IO.FileStream = System.IO.File.OpenRead(".\\equinoxe.htm")
Dim FileReader As New System.IO.StreamReader(File2send)
responseString = FileReader.ReadToEnd
FileReader.Close()
File2send.Close()
Dim buff1 As [Byte]() = System.Text.ASCIIEncoding.ASCII.GetBytes(responseString)
networkStream.Write(buff1, 0, buff1.Length)
File2send = System.IO.File.OpenRead(".\main.jpg")
Dim FileReader2 As New System.IO.StreamReader(File2send)
responseString = FileReader2.ReadToEnd
FileReader2.Close()
File2send.Close()
Dim buff2 As [Byte]() = System.Text.ASCIIEncoding.ASCII.GetBytes(responseString)
networkStream.Write(buff2, 0, buff2.Length)
'================================================
'MsgBox("Message Sent /> " + responseString)
Timer1.Enabled = True
End If
End If
End Sub
End Class
la connection serveur fonctionne ma page html s'ouvre bien mais le probleme c'est que l'image je n'arrive pas a la recuperez je la recoit en format texte je pense que sq vient de mon streamReader.
Je vous prie de bien vouloir m'aider svp je suis vraiment en galere.
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 24 avril 2008 à 16:32
Salut,
File2send = System.IO.File.OpenRead(".\main.jpg")
Dim FileReader2 As New System.IO.StreamReader(File2send)
responseString = FileReader2.ReadToEnd
FileReader2.Close()
File2send.Close()
Tu lis le stream de l'image pour la stocker dans une variable string, je vois pas ce que tu pourrais avoir d'autre qu'un "format texte"
Fais plutot un truc de ce genre:
File2send = System.IO.File.OpenRead(".\main.jpg")
' Chargement de l'image:
Dim Image as New Bitmap(File2send)
File2Send.Close
mpjp57
Messages postés18Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention23 mai 2008 24 avril 2008 à 17:10
Je te remercie bcp kevin pour ta reponse sa l'air de fonctionner mais je n'affiche quand meme pas mon image g juste un carré avec une croix rouge au moins je n'est plus le tableau de bytes.
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 24 avril 2008 à 23:36
Re,
Ouais, mon dernier message n'était pas très utile, puisque il montre comment créer une Image, que tu ne peux pas envoyer tel quel sur le réseau.
Si je reprend du début, c'est effectivement ton StreamReader qui pose problème, le StreamReader est conçu pour lire du texte.
Et que je sache, tu peux pas stoquer des données binaires dans un String, tu aura des pertes de données.
Pourquoi passer par une variable String et utiliser un StreamReader?
File2send = System.IO.File.OpenRead(".\main.jpg")
Dim FileReader2 As New System.IO.StreamReader(File2send)
' Lecture du fichier jpg en text???
responseString = FileReader2.ReadToEnd
FileReader2.Close()
File2send.Close() ' La fermeture du Reader ferme aussi le Stream -> inutile
' Pour le retransformer en Bytes?
Dim buff2 As [Byte]() = System.Text.ASCIIEncoding.ASCII.GetBytes(responseString)
networkStream.Write(buff2, 0, buff2.Length)
Il faut, au contraire de ce que tu dis en dernier, tout faire dans un tableau de Bytes.
Alors voici la solution (c'est plus court ) :
Dim ImgBuff() As Byte = IO.File.ReadAllBytes(".\main.jpg")
networkStream.Write(ImgBuff, 0, ImgBuff.Length)
Mais tu peux aussi faire avec la version longue:
' Ouvrir le fichier
Dim FileStream As IO.FileStream = System.IO.File.OpenRead(".\main.jpg")
' Utiliser un BinaryReader et pas un StreamReader pour lire des données binaires
Dim FileReader As New System.IO.BinaryReader(FileStream)
' Lire le fichier complet et en faire un tableau de bytes
Dim ImgBuff() As Byte = FileReader.ReadBytes(FileStream.Length)
' Fermer le Reader (le Stream est fermé aussi avecFileReader.Close)
FileReader.Close()
' Envoyer le tableau
networkStream.Write(ImgBuff, 0, ImgBuff.Length)
mpjp57
Messages postés18Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention23 mai 2008 25 avril 2008 à 04:10
A la fin de ma page HTML il y une serie de code incomprehensible je pense ke ce sont les bytes de l'images et a l'endroit ou je veut mon image il ya le carré avec la croix rouge:
mpjp57
Messages postés18Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention23 mai 2008 25 avril 2008 à 16:54
oui je l'envoie ds un fichier HTML parce ke le but de mon serveur c'est lorqu'il est actif je dois meconnecté dessus avec l'adresse ip 127.0.0.1:8080 et sa m'affiche mapage HTML avec toute mes commande et mon image.
mpjp57
Messages postés18Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention23 mai 2008 28 avril 2008 à 16:03
oui c ce ke g effectivement l'image est a part mais a dans le meme dossier ke ma page html. J'aimerai également savoir s'il est possible de faire l'inverse c a dire d'envoyer un message texte a un programme vb a partir de la page HTML c adire en clikant sur un lien de la page HTML j'aimerai ke cela génere un message texte vers mon programme vb.net. Merci bcp de prendre la peine de m'aider c vraiment sympa de ta part.
mpjp57
Messages postés18Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention23 mai 2008 30 avril 2008 à 20:07
oui je sais c ce que j'ai fais mon image est a part elle s'apel main.jpg et sur mon code source de ma page html je fait apel a mon image en ecrivant
"<img style = width:200px; height:150px; "background-image: src="main.jpg"align=middle"
"
d'apres un amis c parce ke j'envoie ma pagr html et mon image en meme tpset ke je devais modifier mon programme pour k'apres la connection on envoie d'abord la page html puis ensuite limage
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 5 mai 2008 à 14:04
Tu envois tout ça à quoi?
Si c'est à un client qui se connecte, ça ne peut pas fonctionner ton truc. Tu dois d'abord héberger l'image qqpart, pour que le client la charge une fois que lui le voudra (lorsque il chargera la page web), donc il ne faut en tout cas pas envoyer cette image lorsque le client se connecte.
Ce que tu dois faire, c'est un serveur de fichier. Si le client veux charger le fichier main.jpg, tu l'envois, si il veut un autre fichier, tu envois cet autre fichier...
Si ton but est de faire un serveur d'hébergement de site web, je pense que tu es parti dans la mauvaise direction...
mpjp57
Messages postés18Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention23 mai 2008 5 mai 2008 à 16:14
mon image est ds un fichier separer mais je laisse tomber l'image maintenant au lieu de limage jaimerai envoie du texte c'est a dire lorsque je clik sur un menu de ma page d'acceuille jaimerai envoyer un message texte.. Est ce que c possible.