OVH Cloud OVH Cloud

Problème de communication...

3 réponses
Avatar
Nicolas B.
Bonsoir,

Tout d'abord, merci à Etienne qui m'a guidé vers l'utilisation de
TcpClient pour lire les newsgroups, mais je suis à nouveau coincé (faut
dire, je débute). Dans le code ci-dessous je me connecte à un serveur de
news (c'est OK), je demande un certain groupe de discussion puis
j'essaye à nouveau de lire ce que je reçois et là, ça bloque (il reste
indéfiniment sur NWS.Read(...)). Le second MsgBox devrait renvoyer
quelque chose ressemblant à ça : "211 2029 1 20240
microsoft.public.fr.dotnet.vb".
Je n'arrive pas à savoir si ça vient de l'envoi de données qui n'a pas
fonctionné ou de la tentative de lecture elle-même.

Merci de m'éclairer.


Dim TCP As New System.Net.Sockets.TcpClient
TCP.Connect("news.microsoft.com", 119)
Dim NWS As System.Net.Sockets.NetworkStream = TCP.GetStream
Dim str As String

Dim bR(TCP.ReceiveBufferSize) As Byte
NWS.Read(bR, 0, TCP.ReceiveBufferSize)
str = System.Text.Encoding.ASCII.GetString(bR)
MsgBox(str) 'jusque là, ça marche

Dim bW As [Byte]() = System.Text.Encoding.ASCII.GetBytes _
("group microsoft.public.fr.dotnet.vb")
NWS.Write(bW, 0, bW.Length) 'apparemment ça marche,
'mais je n'arrive pas à le vérifier

Dim bR2(TCP.ReceiveBufferSize) As Byte
NWS.Read(bR2, 0, CInt(TCP.ReceiveBufferSize)) 'ça coince ici
str = System.Text.Encoding.ASCII.GetString(bR2)
MsgBox(str)

TCP.Close()


--
Nicolas B.

3 réponses

Avatar
Zazar
Bonsoir,

Dim bW As [Byte]() = System.Text.Encoding.ASCII.GetBytes _
("group microsoft.public.fr.dotnet.vb")



Je ne connais pas le protocole NNTP, mais à vue de nez il manque un
délimiteur ici : caractère nul, retour chariot, ... je vous laisse consulter
la RFC adéquate.

--
Zazar
Avatar
Nicolas B.
Salut Zazar,

Ca marche ! Merci !

J'aurais jamais trouvé la solution tout seul, bien qu'elle soit toute
simple :-)


A+
Nicolas B.


Zazar wrote:
Bonsoir,


Dim bW As [Byte]() = System.Text.Encoding.ASCII.GetBytes _
("group microsoft.public.fr.dotnet.vb")




Je ne connais pas le protocole NNTP, mais à vue de nez il manque un
délimiteur ici : caractère nul, retour chariot, ... je vous laisse consulter
la RFC adéquate.

--
Zazar




Avatar
Zazar
Bonjour,

J'aurais jamais trouvé la solution tout seul, bien qu'elle soit toute
simple :-)



Dans tous les protocoles de communication, il faut que celui qui reçoit des
données soit capable d'isoler les différents messages qu'il a obtenus. Pour
cela, il n'y a pas 36 solutions :
-> soit on impose une taille fixe aux messages
-> soit on préfixe le message par la taille des données
-> soit on met un délimiteur entre chaque message

--
Zazar