Probleme avec tcplistener et tcpclienr

crispo116 Messages postés 3 Date d'inscription vendredi 21 juillet 2006 Statut Membre Dernière intervention 8 mai 2009 - 7 mai 2009 à 19:50
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 9 mai 2009 à 17:27
slt à tous j'ai besoin d'aide svp he débute dans le monde de programation et je dois réaliser une application dans vb.net 2005 avec les sockets dans laquelle un client envoit des messages a un serveur qui va recuperer les messages dans une listebox  j'ai realiser ce coude mais le serveur recupere seulement le premiere message les autres non
couté client:


Imports System.Net.Sockets




Imports




System.Text



Imports




System.Net.Sockets.NetworkStream 

 

 




Public








Class

Form1



Dim

tcpClient


As





New

System.Net.Sockets.TcpClient()



Dim

networkStream


As

NetworkStream








Private





Sub

Form1_Load(


ByVal

sender


As

System.Object,


ByVal

e


As

System.EventArgs)


Handles





MyBase

.Load

tcpClient.Connect(



"127.0.0.1"

, 8000)



End





Sub








Private





Sub

Button1_Click(


ByVal

sender


As

System.Object,


ByVal

e


As

System.EventArgs)


Handles

Button1.ClicknetworkStream = tcpClient.GetStream



If

networkStream.CanWrite


Then








Dim

sendBytes


As

[Byte]()sendBytes = Encoding.ASCII.GetBytes(t1.Text)

networkStream.Write(sendBytes, 0, sendBytes.Length)

L1.Items.Add(t1.Text)     'le message aussi affiche dans un listebox cote client



End





If 










End





Sub

code cote serveur
Imports

System
Imports

System.IO
Imports

System.Net
Imports

System.Net.Sockets
Imports

System.Text
Imports

Microsoft.VisualBasic
Imports

System.Threading 

 

Public

Class Form1

'Dim portecoute As Integer

' Dim localAddr As IPAddress = IPAddress.Parse(adresseip.Text)

Dim serveur
As
New TcpListener(8000)

Dim Client
As
New System.Net.Sockets.TcpClient()

Dim stream
As NetworkStream 

Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click 

serveur.Start()

 

Dim client
As TcpClient = serveur.AcceptTcpClient()

Try
'qund j utilise ici un while client.Connected  lees messages arrive au serveur mais je le vois pas au moment qu'elle arrive je doit attendre la deconnection de client par ce que le serveur se plante

Dim networkStream
As NetworkStream = client.GetStream()

Dim streambyte(client.ReceiveBufferSize)
As
Byte



networkStream.Read(streambyte, 0, streambyte.Length)



Dim

clientdata


As





String

= Encoding.ASCII.GetString(streambyte)









L1.Items.Add(clientdata)
















Catch

ex


As

ExceptionMsgBox(



"erreur"

)



End





Try











End





Sub
autre question svp pour que le serveur envois aussi de la meme maniere des messages au clients que he dois faire
aidez moi svp pour trouver une solution merci

11 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
7 mai 2009 à 20:26
Salut,

Ta méthode 'While' n'est pas très propre, si tu veu attendre la connexion et en être averti passe pas un socket asynchrone,

Tu as un exemple la =>> http://www.vbfrance.com/codes/SOCKET-ASYNCHRONE-CLIENT-SERVEUR_47853.aspx

@+
crispo116 Messages postés 3 Date d'inscription vendredi 21 juillet 2006 Statut Membre Dernière intervention 8 mai 2009
7 mai 2009 à 22:13
merci pour votre réponse j ai deja telecharger ce code mais ca marche pas j ai vb.net 2005 et le code develope en vb.net 2008
merci encore une fois
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
8 mai 2009 à 02:33
Salut,


Regarde celle la alors...



http://www.vbfrance.com/code.aspx?ID=20110


@+
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
8 mai 2009 à 02:36
(Désolé pour le double post)

Juste pour information il existe une version expresse (Gratuite) de visual basic.net 2008 (Visual Studio .Net Express ed. aussi)

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
8 mai 2009 à 13:10
sa m'inetresse aussi ce sujet,
je suis à le recherche d'une source vb 2008 depuis plus qu'un moi, une source qui montre comment connecté un client irc à un serveur de chat  et recevoir les donnée envoyer par le serveur. si vous avez une idée aidez moi s.v.p
merci

Les yeux montrent la force de l'âme
crispo116 Messages postés 3 Date d'inscription vendredi 21 juillet 2006 Statut Membre Dernière intervention 8 mai 2009
8 mai 2009 à 14:18
merci bcp Mayzz je vais telecharger ce coude source et je vais voir ya t elle une solution
pour Claiyah desole ya aucune aide j espere que quelqu'un voir ce sujet et te donne une solution merci
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
8 mai 2009 à 15:32
Claiyah,

Pour ton idée de connexion au serveur irc, il faut juste utilisé un socket classic pour la connexion, pour le reste c'est sur le protocole irc qu'il faut que tu base tes recherches, dans les 'Script' de mIrc je pense que tu pourras trouvé ton bonheur, sinon => http://www.ircfr.com/

@+
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
8 mai 2009 à 16:43
j'ai aucun probleme avec les protocoles irc, mon problème c'est comment faire un socket classic comme tu a dit.
si tu peut me donner un exemple sa sera génial.
merci encore

Les yeux montrent la force de l'âme
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
8 mai 2009 à 23:07
Re,


Pour les sockets 'Classic' il faut bienentendu utiliser la classe System.Net.Sockets, le soucis c'est que cette classe ne gère pas les évenements (bien casse c*****) d'ailleur.

Alors deux solution s'offrent à toi, selont le type de projet que tu veux réalisé :

1\ Tu utilise les procédures dites 'Synchrones' du socket: Mais le souci, c'est que ton application attend la fin de la procédure pour continuer, sil il y à une erreur de connexion ou un bug, ton appli freez, de plus, tu ne peu pas être averti de l'arrivée des données, il faut appeler une propriété du socket (genre GetData..) pour obtenir les données en attentes.

2\ Tu opte pour les procédures asynchrones du socket, et en passant les arguments à la procédure, tu désigne ne fonction de rappel (CallBack) qui sera appelé par ton socket une fois la fin de la procédure accomplie, ton application ne freez pas, et tu peux avoir des pseudo-évenement. La encore un problème, la fonction asynchrone est appelé dans un thread différent, il faut donc passé par un délégé ou implémenter IasyncResult dans le cas d'une création de contrôle (Comme une classe remplacent winsock par exemple...)

Regarde les lien que j'ai postés ci-dessus, mais avant regarde ce tuto il t'expliquerons ca mieux que moi (Je fait un mauvais prof ) 
il est en C# mais c'est facilement compréhensible. 

> http://vincentlaine.developpez.com/tuto/dotnet/socketasynchrone/csharp/

@+
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
9 mai 2009 à 16:58
merci beaucoup pour ton aide Mayzz
Les yeux montrent la force de l'âme
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
9 mai 2009 à 17:27
Mais il n'y pas de quoi 
Rejoignez-nous