Bonjour à tous,

Je ne sais pas si je poste au bon endroit car mon problème concerne VB .Net ET la programmation réseau ?

Je cherche depuis plusieurs jours à implémenter un code qui permettra de tester une connexion vers internet via un proxy avec
authentification en utilisant l'objet "Sockets".

J'utilise Fiddler pour capturer la connexion de mon logiciel développé à l'aide de Microsoft Visual Studio Express 2012 (Visual Basic).
Cela fonctionne très bien pour le mode TCP/WebRequest.
Je mets le code qui fonctionne bien ci-après:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
If Connection Then
            Dim ReponseReq As HttpWebResponse = Nothing            
            Dim reader As StreamReader = Nothing
            Dim request As WebRequest = Nothing
            Dim proxyObject As WebProxy = Nothing
            Dim Message as string = nothing
            Try
                'on obtient le proxy par defaut
                Dim proxy As IWebProxy = WebRequest.GetSystemWebProxy()
                Dim AdrProxy As Uri = proxy.GetProxy(New Uri("http://www.monsite.com"))
                'on crée l'objet proxy pour y renseigner les "credentials" du proxy 
 	proxyObject = New WebProxy(AdrProxy, True)
                proxyObject.UseDefaultCredentials = False
                Dim basicCredential As New NetworkCredential("a", "a")
                proxyObject.Credentials = basicCredential
                'on initialise la requête 
                request = WebRequest.Create("http://www.monsite.com")
                ' On passe par le proxy
                request.Proxy = proxyObject
                'on définit un timeout
                request.Timeout = 4500
	'on demande une réponse (réponnse attendue 200)             
 	ReponseReq = CType(request.GetResponse, HttpWebResponse)
                If ReponseReq.StatusCode = HttpStatusCode.OK Then
                    reader = New StreamReader(ReponseReq.GetResponseStream())
                    Message= reader.ReadToEnd()                   
                End If
            Catch ex As Exception
                'Interception et Message d'erreur
           Finally
               'on libère les ressources
                If reader IsNot Nothing Then reader.Close() : reader = Nothing                
                If ReponseReq IsNot Nothing Then ReponseReq.Close() : ReponseReq = Nothing
                If request IsNot Nothing Then request = Nothing
                If proxyObject IsNot Nothing Then proxyObject = Nothing
            End Try    
End If
Par contre, avant de réaliser la lecture d'information sur mon site internet, je dois réaliser un test de connectivité à internet de l'ordinateur
client ; j'utilise juste la fonction "Connect" de l'objet "Sockets" qui est très rapide et permet de valider la connexion réelle à internet.
Cette fonction fonctionne très bien sans proxy mais avec proxy et authentification :
- Fiddler ne capture pas du tout les "Sockets" ou alors je ne sais pas comment faire ?
- J'ai cherché le code pour passer par un proxy avec authentification avec les "Sockets" : sans résultat ?

Le code pour l'objet "Sockets" est très simple car je ne fais que vérifier la connectivité en utilisant des Url de grands sites internet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
Dim Sock As Sockets.Socket = Nothing
Try
Sock = New Sockets.Socket(Sockets.AddressFamily.InterNetwork, Sockets.SocketType.Stream, Sockets.ProtocolType.Tcp)
Sock.SendTimeout = 4000
Sock.ReceiveTimeout = 4000
Sock.Connect(New IPEndPoint(Dns.GetHostEntry("www.google.com")).AddressList(0), 80))
 If Sock.Connected Then
      Sock.Shutdown(Sockets.SocketShutdown.Both)
      ' Je met ici un flag qui permet de valider la connexion effective de l'ordinateur à Internet 
      End If
 Catch ex As Net.Sockets.SocketException
 
 Finally
              ' liberation des ressources     
 If Sock IsNot Nothing Then Sock.Close() : Sock = Nothing
End Try

Je peux contourner le problème en restant avec l'objet WebRequest mais je ne pourrais pas faire fonctionner le code qui permet
de lire la date et l'heure sur les serveurs de temps mondiaux utilisant le protocole UDP port 123 avec l'objet "Sockets".

Je commence à désespérer ...

Pour résumer, :
- Comment implémenter le passage par un proxy avec autenthification avec l'objet "Sockets"
- Y a t-il un émulateur de proxy autre que Fiddler qui capturerait le trafic via "Sockets" ? Peut-être je n'ai pas tout compris à propos
de Fiddler pour la capture des "Sockets"

Merci par avance pour un début de solution ou un lien qui me permettrait d'avancer un peu dans cette galère ...

Cordialement
Pascal