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:
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
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
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
Partager