[Visual Basic.NET #87] TCP (Envoyer/Recevoir des données) - Créer les TCPClients [2/2]

  Рет қаралды 10,188

Projetx7

Projetx7

Күн бұрын

Пікірлер: 53
@francoisb.1513
@francoisb.1513 4 ай бұрын
Déterrage de vidéo !! Tes deux vidéos m'ont bien aidées dans mon projet même après toutes ces années. Merci beaucoup à toi pour ce travail.
@bralielisesitou1841
@bralielisesitou1841 8 жыл бұрын
Quel grand et bon travail, effectué? Merci beaucoup Projectx7, C'est Super!!!!
@saturninramirez1107
@saturninramirez1107 3 жыл бұрын
Bonjour , tres bien expliqué , merci
@joseramarosandy4740
@joseramarosandy4740 5 жыл бұрын
Salut, lorsque je clique sur le bouton se déconnecter et je reconnecte le serveur, le bouton ne change plus à "se deconnecter", d'ailleur lorsque je lance le client et quand je le connecte au serveur,j'ai eu une erreur comme celle-ci : SocketException was unhandled" (aucune connexion n'a pu etre établie car l'ordinateur cible l'a expressément refusée 127.0.0.1:3818) et non pas : "le serveur a fermé la connexion", peux-tu m'aider
@rolandverneaux1393
@rolandverneaux1393 6 жыл бұрын
Bonjour Tes vidéo sont super! Question j'utilise visual basic pour échanger des données entre Visual basic et l'arduino. Mon arduino envoie un identifiant (du type 145869) sur le port série. Comment lire cette valeur (qui vient donc tu port série) et l'afficher a l'aide d'un label dans visual basic ? Merci d'avance
@verslay
@verslay 6 жыл бұрын
Bonjour, je viens de voir ce tutoriel et il répond à ce que je cherché, du moins presque. Je m'explique, il y a effectivement un serveur et des clients mais les messages que les clients envoient vont directement sur le serveur et du coup les clients ne peuvent pas parler entre eux. J'aimerai savoir comment on peut faire pour que lorsque le client1 envoie un message, le message passe par le serveur puis ensuite s'arrête au client2 donc le client2 peut voir le message et vice versa. Merci et j'espère que vous m'aurez compris.
@sergedoux7601
@sergedoux7601 2 жыл бұрын
Bonjour félicitations je beaucoup aimer la vidéo mais j'ai une question comment faire si on voulait partager une telle application sur deux ou plusieurs ordinateurs qui vont se connecter à ce serveur comment y parvenir
@nguessanyapojosiasarmel3467
@nguessanyapojosiasarmel3467 6 жыл бұрын
merci pour le tuto mais j'ai un soucis. si je veux enregistrer les messages dans une bd comment je m'y prends?
@sebastienperrin423
@sebastienperrin423 4 жыл бұрын
salut, super vidéo. Petite question, est-ce que une personne qui se trouve par exemple à 100km de chez moi peut se connecter ou pas ?
@ll2-antoni
@ll2-antoni 7 жыл бұрын
Salut très bon travail, tu expliques très bien et pourrais tu montrer comment envoyer automatiquement un fichier texte par mail en indiquant son emplacement et les renseignements (adresse mail, code,...) dans le code ?
@arielboukris
@arielboukris 7 жыл бұрын
Salut, pourrai tu faire une version pour envoyer/recevoir des fichiers ?
@vincentp4047
@vincentp4047 4 жыл бұрын
Bonjour, on peut t on trouver votre code en zip merci pour le tuto
@toolsgadgets5079
@toolsgadgets5079 6 жыл бұрын
Merci pour la vidéo, est ce qu'il a possibilité d'envoyer/recevoir des fichiers ?
@OnimOff
@OnimOff 5 жыл бұрын
Salut, j'ai une erreur : Run n'est pas un membre de System.Threading.Tasks.Tas. Pouvez vous m'aider please
@vidottofrederic8232
@vidottofrederic8232 4 жыл бұрын
meme probleme pouvez vous m aider
@jbrelave647
@jbrelave647 6 жыл бұрын
Salut, comment le serveur peut parler a un Client et pas les autres ?
@grevi_teachingstv7067
@grevi_teachingstv7067 5 жыл бұрын
Salut, cette application m'a beaucoup inspirée!!! merci beaucoup. Mais j'ai une préoccupation cette ligne me renvoie une erreur Private Sub BtnSeConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSeConnect.Click If (BtnSeConnect.Text = "Se connecter") Then MonClient = New TcpClient() MonClient.Connect(IPAddress.Parse("127.0.0.1"), Integer.Parse(TextPort.Text)) Dim Context As TaskScheduler = TaskScheduler.FromCurrentSynchronizationContext() Task.Run(Sub() LireLesMessages(Context, MonClient.GetStream())) BtnSeConnect.Text = "Se connecter" Else MonClient.Close() BtnSeConnect.Text = "Se connecter" End If End Sub Quand je met Task.Run on met dit que Ru n'est pas un membre de system.Threading.Tasks.Task Qu'est dois-je faire? Aidez-moi s.v.p.
@stephanes343
@stephanes343 8 жыл бұрын
Une autre question c'est possible de fusionné, le serveur et le client (émetteur et récepteur dans la mème applis.? merci encore pour ton travail .
@projetx7
@projetx7 8 жыл бұрын
Justement c'est ce que j'ai fait dans ce tuto.. :P
@stephanes343
@stephanes343 8 жыл бұрын
Non , il y a deux fenêtres , avec une seul fenêtre qui au démarrage est serveur OU client , en fonction si il trouve un serveur il devient client OU il devient serveur si il n'y a pas de serveur. merci .C'est possible?
@projetx7
@projetx7 8 жыл бұрын
J'ai montré comment créer un serveur et un client, a toi d'adapter les choses selon tes besoins. Tu peux essai d’être client au début ça veut dire que t'essai de te connecter comme j'ai montré si il n y a pas de serveur t'aura une erreur que tu peux gérer grâce a (Try Catch) donc au cas d'erreur ça veut dire que il n y a pas de serveur et donc tu peux être le serveur.
@stephanes343
@stephanes343 8 жыл бұрын
merci c'est super top continuer comme ça. très bon travail .
@projetx7
@projetx7 8 жыл бұрын
Merci également.
@lakehalayatelhacenedjallel8378
@lakehalayatelhacenedjallel8378 7 жыл бұрын
Merci pour la vidéo, pourrai tu me dire pourquoi lorsque je clique sur le bouton de connexion du serveur j'obtient une erreur " la référence d'objet n'est pas définie à une instance d'un objet", pourtant le code est le même. Merci
@projetx7
@projetx7 7 жыл бұрын
L'erreur veut dire que la variable ou l'objet est vide t'as probablement oublié le mot clé "New" dans le code MonClient = New TcpClient() Si le problème persiste peut-tu copier-coller ton code ici ? Merci.
@lakehalayatelhacenedjallel8378
@lakehalayatelhacenedjallel8378 7 жыл бұрын
Non je ne l'ai pas oublié par contre j'ai ajouté un "New" dans LesClinets as New Liste(of TcpClient). après j'ai eu l'erreur dans MonServeur.Stop() je l'ai mit en commentaire, y a plus d 'erreur mais aucun msg n'est transmit ou reçu, est ce tu as une idée ? Pour info, là où il y a Task.run, je l'ai remplacé par Task.Factory.StartNew. Merci.
@projetx7
@projetx7 7 жыл бұрын
L'erreur dans Serveur.Stop() ça veut dire que tu n'as pas lancé le serveur, est ce que je peux voir ton code de connexion ? c'est probablement le Port qui n'est pas ouvert.
@lakehalayatelhacenedjallel8378
@lakehalayatelhacenedjallel8378 7 жыл бұрын
Voici le code du serveur : Imports System.Net Imports System.Net.Sockets Imports System.Threading Imports System.Threading.Tasks Imports System.Text Public Class Serveur 'Dim serv As TcpListener Dim MonServeur As TcpListener 'Le serveur Dim LesClients As List(Of TcpClient) 'Les clients TCP ( on crer une liste de tcp client) ' on ajouter un new par ce que on avait une erreur Dim counteur As Integer = 0 ' afin de nommé les clients, client 1, client 2,...., pour savoir qui a envoyé le message Dim client1 As LeClient Dim client2 As LeClient Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Try If (Button2.Text = "Lancer") Then MonServeur = New TcpListener(IPAddress.Parse("127.0.0.1"), Integer.Parse(TextPort.Text)) ' on pouvait mettre directement le port, sinon on fait comme ceci on convertit, parse=convertir LesClients = New List(Of TcpClient) 'pour initialiser les client, comme ça on peut ajouter des clients et ensuite on va lancer le serveur, une fois le serveur est lanceé on va appelé la méthode "accepter" pour accepter les clinets MonServeur.Start() 'Pour faire les mise à jour sur le form 1 on va créer un context Dim Context As TaskScheduler = TaskScheduler.FromCurrentSynchronizationContext() ' ' on va passer ce context à la méthode accepter Task.Factory.StartNew(Sub() Accepter(Context), CancellationToken.None, TaskCreationOptions.LongRunning) 'pour les méthode qui commence avec task font la mise à jour sur le form1(serveur) Button2.Text = "Arrêter" Else For Each client As TcpClient In LesClients client.Close() 'Fermer la connexion avec tous les clients. Next MonServeur.Stop() Button2.Text = "Lancer" End If Catch ex As Exception MessageBox.Show(ex.Message, "Erreur dans la connexion") 'Message d'erreur End Try End Sub Private Sub Accepter(ByVal Context As TaskScheduler) 'Accepter les clients Try While (True) Dim NouveauClient As TcpClient = MonServeur.AcceptTcpClient() ' Pour accepter les clients LesClients.Add(NouveauClient) 'pour ajouter ce nouveau client à la liste des clients counteur = counteur + 1 'on va commencer par une nouvelle tâche Task.Factory.StartNew(Sub() LireLesMessages(NouveauClient.GetStream(), "Client " + counteur.ToString(), Context)) 'Si t'as pas de Task.Run donc utilise Task.Factory.StartNew() '(si on veut accepter qu'un seul client on enlève task, et si on veux accepter plusieurs clients on doit utiliser task, et mettre ses instruction dans une boucle while End While Catch ex As Exception 'Quand j'arrête le serveur j'aurai un msg, donc de préférence je fais que exit sub ' MessageBox.Show(ex.Message) Exit Sub End Try End Sub 'Pour lire les donnés des clients ' Network stream pour lire les données(les messages) 'leNom pour savoir qui a envoyé le message client 1 ou client 2 ,... Private Sub LireLesMessages(ByVal stream As NetworkStream, ByVal LeNom As String, ByVal context As TaskScheduler) 'Lire les données envoyées par les clients. Try Task.Factory.StartNew(Sub() MessageReçu(LeNom + " connecté."), CancellationToken.None, TaskCreationOptions.None, context) Dim buffer(4096) As Byte ' pour mettre les donnée envoyer par le client While (True) ' pour continuer à lire les messages 'Pour savoir combien de données on a lu Dim lu As Integer = stream.Read(buffer, 0, buffer.Length) ' pour stocker les données dans buffer, à partir du zéro,et ondique la taille de données 'si lu > 0 le client à envoyé qqc et si lu = 0 le clinet est déconnecter If (lu > 0) Then 'Pour convrtir le message de Byte en string Dim Message As String = Encoding.UTF8.GetString(buffer, 0, lu) ' On va mettre le message dans text box avc Messager ecçu Task.Factory.StartNew(Sub() MessageReçu(LeNom + ": " + Message), CancellationToken.None, TaskCreationOptions.None, context) Else 'le client est déconnecter donc on doit sortir de cette methode(lirelesmessages) ' pour indiquer que le clinet est déconnecter Task.Factory.StartNew(Sub() MessageReçu(LeNom + ": déconnecté."), CancellationToken.None, TaskCreationOptions.None, context) Exit Sub End If End While Catch ex As Exception End Try End Sub ' Pour mettre à jour les messages reçus Private Sub MessageReçu(ByVal leMessage) TextBox1.AppendText(leMessage + vbNewLine) ' Appendtext : pour rajouter un message, vbNewline pour sauter une ligne End Sub ' Comme on a utiliser le task donc on ne peut pas modifier directement le textbox on doit utiliser le contexte Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 'Buton Envoyer message aux clients. ' Lorsque on clique sur envoyer, on va envoyer le msg à tt les clients ' pour avoir en moins un client connecter If (LesClients.Count > 0 And TextBox2.Text IsNot "") Then Dim LeMessage As String = TextBox2.Text Dim buffer() As Byte = Encoding.UTF8.GetBytes(LeMessage) For Each client As TcpClient In LesClients client.GetStream().Write(buffer, 0, buffer.Length) ' getstream pour envoyer et recevoir des msg Next End If End Sub Private Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click client1 = New LeClient() client1.Show() client2 = New LeClient() client2.Show() End Sub End Class """""""""""""""" Et voici le code du client Imports System.Text Imports System.Net Imports System.Net.Sockets Imports System.Threading Imports System.Threading.Tasks Public Class LeClient Dim MonClient As New TcpClient Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 'Bouton de connexion. ' Try 'Pour éviter les erreurs If (Button1.Text = "Se connecter") Then MonClient = New TcpClient() MonClient.Connect(IPAddress.Parse("127.0.0.1"), Integer.Parse(TextPort.Text)) Dim Context As TaskScheduler = TaskScheduler.FromCurrentSynchronizationContext() Task.Factory.StartNew(Sub() LireLesMessages(Context, MonClient.GetStream())) Button1.Text = "Se déconnecter" Else MonClient.Close() Button1.Text = "Se connecter" End If ' Catch ex As Exception ' MessageBox.Show(ex.Message, "Erreur") 'Afficher l'erreur. ' End Try End Sub Private Sub LireLesMessages(ByVal Context As TaskScheduler, ByVal stream As NetworkStream) 'Lire les messages du serveur Try Dim Buffer(4096) As Byte While (True) Dim lu As Integer = stream.Read(Buffer, 0, Buffer.Length) If (lu > 0) Then Dim Message As String = Encoding.UTF8.GetString(Buffer, 0, lu) 'False: le serveur n'a pas fermé la connexion Task.Factory.StartNew(Sub() NouveauMessage(Message, False), CancellationToken.None, TaskCreationOptions.None, Context) Else 'True: le serveur a fermé la connexion Task.Factory.StartNew(Sub() NouveauMessage("Le serveur a fermé la connexion.", True), CancellationToken.None, TaskCreationOptions.None, Context) Exit Sub End If End While Catch ex As Exception Exit Sub End Try End Sub Private Sub NouveauMessage(ByVal message As String, ByVal Fermé As Boolean) TextBox1.AppendText(message + vbNewLine) If (Fermé) Then Button1.Text = "Se connecter" MonClient.Close() End If End Sub Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click 'Bouton envoyer un message au serveur. If (Button1.Text = "Se déconnecter") Then Dim buffer() As Byte = Encoding.UTF8.GetBytes(TextBox2.Text) MonClient.GetStream().Write(buffer, 0, buffer.Length) TextBox2.Text = "" End If End Sub End Class """ Merci.
@projetx7
@projetx7 7 жыл бұрын
Je vais tester chez moi mais juste rapidement est ce que le texte sur le button2 est égal à "Lancer" ? Pour vérifier étape par étape on va ajouter quelque messageBox et vérifications, dans le bouton lancer on va mettre plutôt ça: (Avec ces vérifications on doit pas avoir d'erreur qu'on on veut lancer le serveur) Try If (Button2.Text = "Lancer") Then MonServeur = New TcpListener(IPAddress.Parse("127.0.0.1"), Integer.Parse(TextPort.Text)) ' on pouvait mettre directement le port, sinon on fait comme ceci on convertit, parse=convertir MessageBox.Show("Etape 1 : Serveur initialisé") 'Vérification 1 LesClients = New List(Of TcpClient) 'pour initialiser les client, comme ça on peut ajouter des clients et ensuite on va lancer le serveur, une fois le serveur est lanceé on va appelé la méthode "accepter" pour accepter les clients MonServeur.Start() MessageBox.Show("Etape 2 : Serveur lancé") 'Vérification 2 'Pour faire les mise à jour sur le form 1 on va créer un context Dim Context As TaskScheduler = TaskScheduler.FromCurrentSynchronizationContext() ' ' on va passer ce context à la méthode accepter Task.Factory.StartNew(Sub() Accepter(Context), CancellationToken.None, TaskCreationOptions.LongRunning) 'pour les méthode qui commence avec task font la mise à jour sur le form1(serveur) Button2.Text = "Arrêter" Else 'Vérifier que lesClients est intialisée If LesClients Nothing Then For Each client As TcpClient In LesClients client.Close() 'Fermer la connexion avec tous les clients. Next End If If MonServeur Nothing Then 'Vérifier que le serveur n'est pas vide (Null) MonServeur.Stop() End If Button2.Text = "Lancer" End If Catch ex As Exception MessageBox.Show(ex.Message, "Erreur dans la connexion") 'Message d'erreur End Try
@preganamackoundy3779
@preganamackoundy3779 8 жыл бұрын
Merci beaucoup mais avant je pensai que la programmation était vraiment compliquer que il falait avoir des connaissance de Mathématique trés avancer mais grâce à tes tutoriels je peux programmer mes logiciels merci,merci beaucoup. Mais j'ai un problème, je n'arrive pas à connecter la base de donné et mon logiciel que j'ai créé si vous pouvez m'aider Merci!
@MelchiBanza
@MelchiBanza 5 жыл бұрын
Bonjour j'aimerai avoir ce projet mais en c#
@kacoukevan8692
@kacoukevan8692 8 жыл бұрын
salut à tous j'ai besoin d'aide. je faire un logiciel de ventes de boisons, je cherche comment permettre à l'utilisateur de choisir plusieurs boisons simultanément pour en faire la commande du client afin de faire la déduction de la quantité de chacun dans la base de donnée. je pus faire pour un article acheté mais pour plusieurs,ça coince. Aidez moi svp.
@mohamedcamara1350
@mohamedcamara1350 6 жыл бұрын
Quelles sont tes tables pour cette ventes?
@i-media404
@i-media404 4 жыл бұрын
On dirait qu'il n' y a pas de 88 sur le playlist
@stephanes343
@stephanes343 8 жыл бұрын
Merci pour le partage très bien merci. Peut on crypté la connexion entre client serveur ? avec une base 64 ou autre merci encore
@projetx7
@projetx7 8 жыл бұрын
Oui on peut crypter les données avant de les envoyer et les décrypter une fois reçu.
@stephanes343
@stephanes343 8 жыл бұрын
comment faire ? merci
@projetx7
@projetx7 8 жыл бұрын
Tu peux utiliser ces deux méthodes pour crypter et décrypter: pastebin.com/LVXr9jqc Exemple: Dim Phrase As String = "Salut" TextBox1.Text = Crypter(Phrase) 'Décrypter: TextBox2.Text = Décrypter(TextBox1.Text) '= Salut
@stephanes343
@stephanes343 8 жыл бұрын
Merci cela fonctionne super bien.
@KlaChPlay
@KlaChPlay 7 жыл бұрын
c'est quoi ta version de visual basic ?
@projetx7
@projetx7 7 жыл бұрын
Visual Studio community 2015, c'est une version gratuite
@KlaChPlay
@KlaChPlay 7 жыл бұрын
il est possible de genre faire une integration d'un chat vocal en plus du chat ecris ?
@projetx7
@projetx7 7 жыл бұрын
Oui c'est possible, j'en ferai un tuto très prochainement ^^
@KlaChPlay
@KlaChPlay 7 жыл бұрын
Projetx7 Dac merci 😊
@KlaChPlay
@KlaChPlay 7 жыл бұрын
comment on peut faire pour separer le serveur et client ?
What is NPM, and why do we need it? | Tutorial for beginners
14:27
Coder Coder
Рет қаралды 338 М.
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 16 МЛН
小丑教训坏蛋 #小丑 #天使 #shorts
00:49
好人小丑
Рет қаралды 54 МЛН
It’s all not real
00:15
V.A. show / Магика
Рет қаралды 20 МЛН
Vim As Your Editor - Introduction
12:24
ThePrimeagen
Рет қаралды 1 МЛН
Coding a Web Server in 25 Lines - Computerphile
17:49
Computerphile
Рет қаралды 356 М.
Ce truc ? La plus grande prouesse informatique
15:11
overfl0w
Рет қаралды 146 М.