TCP et UDP - Programmation
Marsh Posté le 07-02-2001 à 13:32:53
j'kroa ke c pa clair c'ke g dit ...
en fait g fait, (pour le TCP)
une app client et une app serveur
ya 2 controles text, et sur le client, un bouton connect (en + des 2 textes)(il se connecte grace au nom de la machine, pas l'ip)
dès que j'écris du texte sur le serveur ou le client, ca me fait une sale erreur 40001
en UDP
idem, 2 apps clientes (UDP = pas de serveur)
interface similaire (pas de bouton connect)
dès ke je tape un texte déstinée a etre envoyé sur l'autre machine (via le nom de la machine, port 1001)
ca foire, erreur 10014
Marsh Posté le 07-02-2001 à 15:42:20
Tu utilises quel objet ?
tu fait koi comment ?
montre une partie du source.
Mon Chat passe en TCP, et ça marche nikel qu'il soit sous NT, 2K ou 9x
Marsh Posté le 07-02-2001 à 15:56:55
TCP : 1 feuille server, 1 feuille client
SERVER
Private Sub Form_Load()
' Donne à la propriété LocalPort une valeur
' entière. Puis invoque la méthode Listen.
tcpServer.LocalPort = 1001
tcpServer.Listen
' Affiche la feuille client.
frmclient.Show
End Sub
Private Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
' Vérifie que le contrôle est fermé. Sinon, ferme
' la connexion en cours avant d'accepter la
' nouvelle.
If tcpServer.State <> sckClosed Then _
tcpServer.Close
' Accepte la demande avec le paramètre requestID.
tcpServer.Accept requestID
End Sub
Private Sub txtSendData_Change()
' Le contrôle TextBox nommé txtSendData contient
' les données à envoyer. Chaque fois que l'utilisateur entre du
' texte dans le contrôle textbox, la chaîne est envoyée en
' utilisant la méthode SendData.
tcpServer.SendData txtSendData.Text
End Sub
Private Sub tcpServer_DataArrival _
(ByVal bytesTotal As Long)
' Déclare une variable pour les données reçues.
' Invoque la méthode GetData et paramètre pour
' ces données la propriété Text d'un contrôle
' TextBox nommé txtOutput.
Dim strData As String
tcpServer.GetData strData
txtoutput.Text = strData
End Sub
CLIENT
Private Sub Form_Load()
' Le nom du contrôle Winsock est tcpClient.
' Note : pour spécifier un hôte distant, vous pouvez utiliser soit
' l'adresse IP (ex: "121.111.1.1" ), soit le nom complet de
' l'ordinateur, comme ci-dessous.
tcpclient.RemoteHost = "skylight"
tcpclient.RemotePort = 1001
End Sub
Private Sub cmdConnect_Click()
' Invoque la méthode Connect pour établir une
' connexion.
tcpclient.Connect
End Sub
Private Sub txtSendData_Change()
tcpclient.SendData txtsend.Text
End Sub
Private Sub tcpClient_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
tcpclient.GetData strData
txtoutput.Text = strData
End Sub
UDP
2 feuilles client (A et B)
feuille A
Private Sub Form_Load()
' Le nom du contrôle est udpPeerA
With udpPeerA
' IMPORTANT: assurez-vous de changer la valeur de RemoteHost
' pour lui donner le nom de votre ordinateur
.RemoteHost = "PeerB"
.RemotePort = 1001 ' Port auquel on se connecte.
.Bind 1002 ' Établit le lien avec le port local.
End With
frmPeerB.Show ' Affiche la seconde feuille.
End Sub
Private Sub txtSend_Change()
' Envoie le texte dès qu'il est tapé.
udpPeerA.SendData txtSend.Text
End Sub
Private Sub udpPeerA_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
udpPeerA.GetData strData
txtOutput.Text = strData
End Sub
FEUILLE B
Private Sub Form_Load()
' Le nom du contrôle est udpPeerB.
With udpPeerB
' IMPORTANT : assurez-vous de changer la valeur de RemoteHost
' pour lui donner le nom de votre ordinateur.
.RemoteHost = "PeerA"
.RemotePort = 1002 ' Port auquel on se connecte.
.Bind 1001 ' Établit le lien avec le port local.
End With
End Sub
Private Sub txtSend_Change()
' Envoie le texte dès qu'il est tapé.
udpPeerB.SendData txtSend.Text
End Sub
Private Sub udpPeerB_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
udpPeerB.GetData strData
txtOutput.Text = strData
End Sub
yen a ki vont rire mais c l'exemple par defaut, de la MSDN a propos du composant winsock 6.0 (SP4)
et j'arrive pas a le faire marcher ! (je peux pas tester sou 9x)
g win2k pas SP1 et DX7.0a
Marsh Posté le 07-02-2001 à 17:29:32
Nan, j'ai pas ICQ.
Euh... met "skylight" à la place de "PeerA" at "PeerB"
Sinon, dans MSDN, y'a un exemple d'un serveur "multi-client", en fait c'est un tableau de WinSock
Grossomodo, tu fais exactement ce qu'il y a dans MSDN (n'oublie pas l'intégrer le composant WinSock dans ta feuille !) et ça marche...
C'est comme ça que j'ai débuté aussi...
3 heures après naissait la béta 1 de mon chat
Marsh Posté le 07-02-2001 à 19:27:14
tu me donnes l'adresse disk dur de la page html (de msdn) concernée ?
Merci (un peu de flemme ca fait du bien )
Marsh Posté le 07-02-2001 à 21:08:20
bin dans MSDN (la page que tu dis )
tu fais propriétés, , c 'est une page html
Marsh Posté le 07-02-2001 à 21:55:26
bah ouais, mais d'une version de MSDN à l'autre, c pas pareil...
fait une recherche sur "WinSock"
Marsh Posté le 07-02-2001 à 13:14:41
ya qqun qui a reussi a faire marcher ces protocoles sous windows 2000 ?
A CHAQUE FOIS , j'ai une erreur sur la ligne de code suivante !udpPeerA.SendData txtSend.Text
pareil en TCP !
m'enerve !
si qqun a une app ki marche en TCP ze veu bien la source car la je sais plus koa faire !