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
 (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 !