Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1642 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Socket]Utilisation socket si on se connecte au net via un proxy

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Socket]Utilisation socket si on se connecte au net via un proxy

n°831947
TouperTino​is
Posté le 25-08-2004 à 15:42:56  profilanswer
 

Voila j'ai implémenté une connection socket qui me permet de me connecter sur un serveur afin de récupérer le code html de la page désirée pour en faire un traitement ultérieur.
Le problème est le suivant. Si je me connecte de chez moi tout fonctionne normalement, mais si je me connecte du taff ca fonctionne pas il me donne une erreur NETWORK UNREACHABLE. Au taff je me connecte auu net via un proxy.
Comment faire pour que le socket comprenne qu'il y a un proxy entre lui et le serveur et que mon appli marche.
 
Voila le code du Socket :
 

Code :
  1. char* get_donnees_internet(char* Code,char* adresse,int port)
  2. {
  3. WSADATA WSAData;
  4. WSAStartup(MAKEWORD(2,0), &WSAData);
  5. SOCKET sock;
  6. SOCKADDR_IN sin;
  7. char * buffer = new char[450];
  8. for(int i=0;i < (int)strlen(buffer);i++)
  9. {
  10. buffer[i] = 8;
  11. }
  12. char * requete = new char[255];
  13. sock = socket(AF_INET, SOCK_STREAM, 0);
  14. sin.sin_addr.s_addr   = inet_addr(adresse);
  15. sin.sin_family    = AF_INET;
  16. sin.sin_port    = htons(port);
  17. connect(sock, (SOCKADDR *)&sin, sizeof(sin));
  18. if(WSAGetLastError()!=0)
  19. {
  20. erreur e(WSAGetLastError());
  21. throw(e);
  22. }
  23. sprintf(requete,"GET /d/quotes.csv?s=%s&f=snl1d1t1c1ohgv&e=.csv HTTP/1.0\r\n\r\n",Code);
  24. send(sock,requete,strlen(requete),0);
  25. recv(sock, buffer, strlen(buffer), 0);
  26. //printf("%s",buffer);
  27. return buffer;
  28. closesocket(sock);
  29. WSACleanup();
  30. }


 
Merci d'avance.
 
++

mood
Publicité
Posté le 25-08-2004 à 15:42:56  profilanswer
 

n°831962
docmaboul
Posté le 25-08-2004 à 16:04:29  profilanswer
 

TouperTinois a écrit :

Comment faire pour que le socket comprenne qu'il y a un proxy entre lui et le serveur et que mon appli marche.


 
lire la rfc qui va bien.

n°831967
TouperTino​is
Posté le 25-08-2004 à 16:06:50  profilanswer
 

DocMaboul a écrit :

lire la rfc qui va bien.


 
Tu parles de quelle documentation stp...
Car j'ai rien trouvé sur ca.
++ :bounce:

n°831970
docmaboul
Posté le 25-08-2004 à 16:10:19  profilanswer
 

TouperTinois a écrit :

Tu parles de quelle documentation stp...
Car j'ai rien trouvé sur ca.
++ :bounce:


 
bonne lecture :D

n°831977
TouperTino​is
Posté le 25-08-2004 à 16:18:03  profilanswer
 


 
Bah ecoute ca m'avance pas trop quand meme car je suis un peu perdu dans toutes ces définitions.

n°831984
docmaboul
Posté le 25-08-2004 à 16:22:08  profilanswer
 

TouperTinois a écrit :

Bah ecoute ca m'avance pas trop quand meme car je suis un peu perdu dans toutes ces définitions.


 
hé bien vous essayez d'implémenter par vous-même un bout du procotole http. Si vous n'arrivez pas à comprendre la spec, je ne vois pas comment cela va être possible de vous aider autrement qu'en vous donnant directement une solution que vous ne comprendrez pas plus et que vous ne pourrez donc pas maintenir. Mais, si vous la voulez, vous n'avez qu'à lire les sources de curl ou d'un brower open source.


Message édité par docmaboul le 25-08-2004 à 16:22:17
n°831985
Mr Mala
Posté le 25-08-2004 à 16:22:15  profilanswer
 

Bon ben vas voir ça http://samba.anu.edu.au/rsync/doxy [...] ource.html ..  
( fonction establish_proxy_connection() )  
Je ne sais pas ce que ça vaut mais ça peut peut-être t'aider ...  

n°831989
TouperTino​is
Posté le 25-08-2004 à 16:24:08  profilanswer
 

Mr Mala a écrit :

Bon ben vas voir ça http://samba.anu.edu.au/rsync/doxy [...] ource.html ..  
( fonction establish_proxy_connection() )  
Je ne sais pas ce que ça vaut mais ça peut peut-être t'aider ...


 
Merci je vais essayer de comprendre la fonction mais elle a l'air bien hard qd meme comparée à ma fonciton de 20 lignes de code
++ :pt1cable:

n°831991
TouperTino​is
Posté le 25-08-2004 à 16:27:36  profilanswer
 

DocMaboul a écrit :

hé bien vous essayez d'implémenter par vous-même un bout du procotole http. Si vous n'arrivez pas à comprendre la spec, je ne vois pas comment cela va être possible de vous aider autrement qu'en vous donnant directement une solution que vous ne comprendrez pas plus et que vous ne pourrez donc pas maintenir. Mais, si vous la voulez, vous n'avez qu'à lire les sources de curl ou d'un brower open source.


 
Merci pour cette aide précieuse.
J'espere pour vous que certaines personnes vous ont plus aidé que ca dans votre apprentissage de la programmation.
Mais bien évidemment j'oubliais que dans le monde informatique bon nombre de personnes prennent les débutants de haut. SAchez que personne ne peut avoir la connaissance ultime alors aidons nous les uns les autres et le monde informatique ira mieux


Message édité par TouperTinois le 25-08-2004 à 16:29:10
n°831992
Mr Mala
Posté le 25-08-2004 à 16:28:12  profilanswer
 

oui ben justement, dans tes 20 lignes, il y a apparament peu de chance que  
    closesocket(sock);  
    WSACleanup();  
s'executent vu que tu fais le return() avant !
( si c'est le cas, j'arrête la prog. et je vais élever des lamas au Pérou moi ! )
 

mood
Publicité
Posté le 25-08-2004 à 16:28:12  profilanswer
 

n°831995
TouperTino​is
Posté le 25-08-2004 à 16:30:13  profilanswer
 


 
Excuse ce n'etait pas pour toi la remarque que j'avais mis.
JE suis plongé dans ton code.
merci a toi++

n°832001
Mr Mala
Posté le 25-08-2004 à 16:31:24  profilanswer
 

heuuuu oui oui d'accord, je ne l'avais pas pris pour moi ... mais n'empêche, tu dois faire ton closesocket() et ton WSACleanup() AVANT le return ! :p

n°832002
TouperTino​is
Posté le 25-08-2004 à 16:32:27  profilanswer
 

Mr Mala a écrit :

heuuuu oui oui d'accord, je ne l'avais pas pris pour moi ... mais n'empêche, tu dois faire ton closesocket() et ton WSACleanup() AVANT le return ! :p


 
Oui j'ai changé ca dans la version du socket que j'utilise.

n°832005
docmaboul
Posté le 25-08-2004 à 16:36:08  profilanswer
 

TouperTinois a écrit :

Merci pour cette aide précieuse.
J'espere pour vous que certaines personnes vous ont plus aidé que ca dans votre apprentissage de la programmation.


 
Ni plus ni moins. Lire la doc et la lire bien, c'est une règle de base pour tout programmeur qui se respecte et il n'y a donc pas de meilleurs conseils que les man prout, rfc 3.14, spec XYZ, ... Là, j'ai fait la recherche pour vous: elle contient toutes les informations nécessaires et, au pire, l'endroit où les trouver. Que vous faudrait-il de plus? Le code?

n°832011
TouperTino​is
Posté le 25-08-2004 à 16:42:46  profilanswer
 

DocMaboul a écrit :

hé bien vous essayez d'implémenter par vous-même un bout du procotole http. Si vous n'arrivez pas à comprendre la spec, je ne vois pas comment cela va être possible de vous aider autrement qu'en vous donnant directement une solution que vous ne comprendrez pas plus et que vous ne pourrez donc pas maintenir. Mais, si vous la voulez, vous n'avez qu'à lire les sources de curl ou d'un brower open source.


 
Si ce n'ets pas le code ca pourrait etre une aide sur les étapes de mise en place d'une solution. Enfin qulque chose qui me guide un minimum dans mes recherches car mon code fonctionne dasn un cas mais pas dans un autre.

n°832017
Mr Mala
Posté le 25-08-2004 à 16:46:33  profilanswer
 

DocMaboul a écrit :

Que vous faudrait-il de plus? Le code?


 
Non, pas le code .. mais un minimum d'humilité ..
Personnellement, je trouve plus facile de comprendre ( et adapter évidemment ) un code existant que de se taper XXX pages de RFC ...
Maintenant, si tu as eu la chance de pouvoir tout comprendre tout seul, sans jamais poser de question, juste en lisant des kilos de docs, là, je dis respect et je m'incline !  :jap:  

n°832024
docmaboul
Posté le 25-08-2004 à 16:53:16  profilanswer
 

TouperTinois a écrit :

Si ce n'ets pas le code ca pourrait etre une aide sur les étapes de mise en place d'une solution.


 
Si vous tenez à implémenter vous-même le protocole, lisez la rfc. Cherchez le mot clé "prox" et lisez attentivement tous les paragraphes où il apparaît.
 
Autre choix, à mon avis plus simple mais moins instructif pour vous: apprenez à vous servir d'une lib qui le fera à votre place, comme curl.
 

Citation :

Enfin qulque chose qui me guide un minimum dans mes recherches car mon code fonctionne dasn un cas mais pas dans un autre.


 
- il faut se connecter au proxy sur le port qui va bien, comme c'est indiqué dans la doc
- il faut lui demander la ressource qu'on veut, comme c'est indiqué dans la doc
- si il répond "toi donner user/password" alors faut être gentil avec lui, comme c'est indiqué dans la doc
 
Bref, il faut lire la doc.

n°832030
docmaboul
Posté le 25-08-2004 à 16:57:00  profilanswer
 

Mr Mala a écrit :

Personnellement, je trouve plus facile de comprendre ( et adapter évidemment ) un code existant que de se taper XXX pages de RFC ...


 
c'est vrai que la rfc du http, c'est hard pour commencer.

n°832035
TouperTino​is
Posté le 25-08-2004 à 17:01:35  profilanswer
 

DocMaboul a écrit :

c'est vrai que la rfc du http, c'est hard pour commencer.


 
Je vois a peu pres comment me connecter au proxy certes en utilisant ma meme chose que j'ai implémentée mais apres comment dire au proxy de se connecter sur le serveur internet que je désire sur le port 80 ca je vois pas

n°832055
docmaboul
Posté le 25-08-2004 à 17:15:33  profilanswer
 

C'est dans la rfc au début du chapitre 5, le chapitre décrivant le protocole pour la partie "requêtes".


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Socket]Utilisation socket si on se connecte au net via un proxy

 

Sujets relatifs
Utilisation de l'UC?Utilisation de windir systemroot
ça se connecte pas POURQUOI[php] De l'utilisation des sessions...
Débat théorique à propos d'une utilisation des sockets et des threads[XML]pb utilisation de msxml3.dll sous NT4
[Cookie] Bug avec IE6 sur l'utilisation de cookie tiers ?utilisation des fonctions images
Socket dans une dll[Application Center Test] Qu'est ce qu'une socket error ?
Plus de sujets relatifs à : [Socket]Utilisation socket si on se connecte au net via un proxy


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR