En utilisant la commande "get" de MS-DOS?
Il vaut mieux tout faire passer par socket.
En utilisant la commande "get" de MS-DOS?
Il vaut mieux tout faire passer par socket.
Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
Mon blog : pragmateek.com
La c'est pas socket tu envoi cette commande via send et tu recois donc le résultat via recv.
CR = \n
LF = \r
[edit]
C'est le contraire
CR = \r
LF = \n
[/edit]
Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
Mon espace perso[/B]
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]
Envoyé par Skyrunner
CR = Carriage Return : '\r'
LF = Line Feed (new line) : '\n'
Pas de Wi-Fi à la maison : CPL
Arg je savais que je m'etait trompé, honte à moi
Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
Mon espace perso[/B]
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]
Merci de votre aide, ça avance mais ma requête est foireuse:
Et l'affichage de buffer donne:
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 WSADATA var_init; WSAStartup(MAKEWORD(2,2),&var_init); SOCKET sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); SOCKADDR_IN connection; connection.sin_family=AF_INET; connection.sin_addr.s_addr=inet_addr("82.127.100.37"); connection.sin_port=htons(80); char buffer[1024]; int received=0; FILE* fd; if(connect(sock,(SOCKADDR*) &connection,sizeof(connection))==SOCKET_ERROR){ printf("ERROR\n"); } else{ send(sock,"GET http:c.developpez.com/cours/ HTTP/1.1 \r\n\r\n",1024,0); recv(sock,buffer,1024,0); } printf("%s",buffer); WSACleanup();
Je me doute bien que ma requête est incomplète, mais que manque t'il?
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 HTTP/1.1 400 Bad Request Date: Sun, 28 May 2006 11:42:17 GMT Server: Apache/1.3.33 (Unix) mod_gzip/1.3.19.1a PHP/4.3.10 mod_ssl/2.8.22 OpenSS L/0.9.6m Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 189 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD> <TITLE>400 Bad Request</TITLE> </HEAD><BODY> <H1>Bad Request</H1> Your browser sent a request that this server could not understand.<P> client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): http: c.developpez.com/cours/<P> <HR> <ADDRESS>Apache/1.3.33 Server at ns3549.ovh.net Port 80</ADDRESS> </BODY></HTML>
Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
Mon blog : pragmateek.com
T'as oublié les // dans l'url
Bah tu te connectes sur une ip et tu essai de recuperer je sais pas quoi, je sais pas ou.
Essaye ca
Pour le recv faudrai plutot faire un while...
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 WSADATA var_init; WSAStartup(MAKEWORD(2,2),&var_init); SOCKET sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); SOCKADDR_IN connection; connection.sin_family=AF_INET; connection.sin_addr.s_addr=inet_addr("64.233.167.99"); // Google.com connection.sin_port=htons(80); char buffer[1024]; int received=0; FILE* fd; if(connect(sock,(SOCKADDR*) &connection,sizeof(connection))==SOCKET_ERROR){ printf("ERROR\n"); } else{ send(sock,"GET index.htm HTTP/1.1 \r\n\r\n",1024,0); recv(sock,buffer,1024,0); } printf("%s",buffer); WSACleanup();
Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
Mon espace perso[/B]
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]
Et voilà :Envoyé par Skyrunner
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
39
40
41
42
43
44
45
46 #include <winsock2.h> #include <stdio.h> int main (void) { WSADATA var_init; WSAStartup(MAKEWORD(2, 2), &var_init); SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock != SOCKET_ERROR) { SOCKADDR_IN connection; connection.sin_family = AF_INET; connection.sin_addr.s_addr = inet_addr("64.233.167.99"); /* Google */ connection.sin_port = htons(80); if (connect(sock, (SOCKADDR*) &connection, sizeof(connection)) != SOCKET_ERROR) { char const *request = "GET index.htm HTTP/1.1 \r\n\r\n"; send(sock, request, strlen(request), 0); /* receive */ { char buffer[1024]; int n; while ((n = recv(sock, buffer, sizeof buffer - 1, 0)) != 0) { buffer[n] = 0; printf("%s", buffer); } } } else { printf("ERROR\n"); } } else { printf("ERROR\n"); } WSACleanup(); return 0; }
Pas de Wi-Fi à la maison : CPL
Oui mais là il boucle indéfiniment.Et voilà :
Sinon j'ai essayé avec une page qui se trouve dans l'arborescence:
mais j'ai une erreur 400 "Bad request".
Code : Sélectionner tout - Visualiser dans une fenêtre à part char const *request = "GET epreuves/prog/prog1.php HTTP/1.1 \r\n\r\n";
Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
Mon blog : pragmateek.com
Pas chez moi. Tu as fait un copié/collé ? Je reçois ceci :Envoyé par seriousme
Par contre ensuite, le programme est bloqué en réception. Normal.
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
39
40
41
42
43
44 HTTP/1.1 200 OK Cache-Control: private Content-Type: text/html Set-Cookie: PREF=ID=61514538f5ea32ad:TM=1148820987:LM=1148820987:S=JeKkr_iCAWXQDgYF; expires=Sun, 17-Jan-2038 19:14:07 GMT; path =/; domain=.google.com Server: GWS/2.1 Transfer-Encoding: chunked Date: Sun, 28 May 2006 12:56:27 GMT b19 <html><head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><title>Google</title><style><!-- body,td,a,p,.h{font-family:arial,sans-serif;} .h{font-size: 20px;} .q{color:#0000cc;} --> </style> <script> <!-- function sf(){document.f.q.focus();} // --> </script> </head><body bgcolor=#ffffff text=#000000 link=#0000cc vlink=#551a8b alink=#ff0000 onLoad=sf() topmargin=3 marginheight=3><cente r><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td align=right nowrap><font size=-1><a href="https://www.google.co m/accounts/Login?continue=http://index.htm/&hl=en">Sign in</a></font></td></tr><tr height=4><td><img alt="" width=1 height=1></t d></tr></table><table cellpadding=0 cellspacing=0 border=0><tr><td align=right valign=bottom><img src=images/hp0.gif width=158 h eight=78 alt="Google"></td><td valign=bottom><img src=images/hp1.gif width=50 height=78 alt=""></td><td valign=bottom><img src=i mages/hp2.gif width=68 height=78 alt=""></td></tr><tr><td class=h align=right valign=top><b></b></td><td valign=top><img src=ima ges/hp3.gif width=50 height=32 alt=""></td><td valign=top class=h><font color=#6f6f6f style=font-size:16px><b>English</b></font> </td></tr></table><br> <form action=/search name=f><table border=0 cellspacing=0 cellpadding=4><tr><td nowrap><font size=-1><b>Web</b>   ; <a id=1a class=q href="/imghp?hl=en&tab=wi&ie=UTF-8">Images</a> <a id=2a class=q href="http://grou ps.index.htm/grphp?hl=en&tab=wg&ie=UTF-8">Groups</a> <a id=4a class=q href="http://news.index.htm/nwshp?h l=en&tab=wn&ie=UTF-8">News</a> <a id=5a class=q href="http://froogle.index.htm/frghp?hl=en&tab=wf&ie=UTF- 8">Froogle</a> <a id=7a class=q href="/maphp?hl=en&tab=wl&ie=UTF-8">Maps</a> <b><a href="/intl/en/options/" class=q>more »</a></b></font></td></tr></table><table cellspacing=0 cellpadding=0><tr><td w idth=25%> </td><td align=center><input type=hidden name=hl value=en><input type=hidden name=ie value="ISO-8859-1"><input ma xlength=2048 size=55 name=q value="" title="Google Search"><br><input type=submit value="Google Search" name=btnG><input type=su bmit value="I'm Feeling Lucky" name=btnI></td><td valign=top nowrap width=25%><font size=-2> <a href=/advanced_search ?hl=en>Advanced Search</a><br> <a href=/preferences?hl=en>Preferences</a><br> <a href=/language_tools?hl=e n>Language Tools</a></font></td></tr></table></form><br><br><font size=-1><a href="/intl/en/ads/">Advertising Programs</a> - <a href=/intl/en/services/>Business Solutions</a> - <a href=/intl/en/about.html>About Google</a> - <a href=http://www.google.c om/ncr>Go to Google.com</a></font><p><font size=-2>©2006 Google</font></p></center></body></html> 0
Il faut effectivement avoir un thread pour la réception (ou utliser select()) qui ne remonte que les blocs de données à traiter, après avoir éliminé la couche HTTP, par exemple... On s'appuie sur la longueur utile des données, par exemple (ici, B19 en hexa qui veut dire 2841 bytes)
Pas de Wi-Fi à la maison : CPL
Est-ce une bonne idée de changer la condition du while en fonction du temps:Par contre ensuite, le programme est bloqué en réception. Normal.
Il faut effectivement avoir un thread pour la réception qui ne remonte que les blocs de données à traiter, après avoir éliminé la couche HTTP, par exemple...
connaissant le temps moyen pour réception totale des données on fait "recv "pendant un temps limité.
De toute façon le défi est en temps limité.
Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
Mon blog : pragmateek.com
En HTTP/1.1 je crois qu'on est obligé de mettre l'url complete (commençant par http://domaine...) afin que le serveur web puisse gérer les virtual hostsEnvoyé par seriousme
Sinon, on peut mettre une URL relative et mettant le header "Host", ça donne un truc comme ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 GET epreuves/prog/prog1.php HTTP/1.1\r\n Host: www.monsite.com\r\n \r\n
Note, pour essayer, il ya l'outil "telnet"
(par contre, chais pas pourquoi, mais sous windows, ça affiche rien quand on tape quelquechose)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4telnet monsite.com 80<entrée> GET ...<entrée> <entrée>
Merci de ton aide je récupère une page valide.
Le problème est que l'accés à cette page necessite d'être loggé.
Quand j'y accède à partir du browser internet aucun problème mais forcément via les sockets il ne sait pas d'où provient la requête.
Comment le lui signaler?
J'ai essayé en passant les infos dans l'URL sans succés.
Je vais poster sur le forum PHP mais si vous avez une réponse...
Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
Mon blog : pragmateek.com
Pour ce qui est de l'authentification HTTP, je pense qu'il doit y avoir un ou plusieurs headers à ajouter pour donner son login/pass
Le navigateur le demande peut être qu'une fois mais il doit surement l'envoyer à chaque page pour la zone sécurisée
Normal, il n'y a pas d'écho par défaut et un serveur HTTP n'est pas prévu pour répondre directement à un humain pendant la frappe (c'est pas un modem !). Pas de correction non plus, je suppose.Envoyé par Gruik
Pas de Wi-Fi à la maison : CPL
Suivant les infos du forum PHP ce serait du POST donc :
Mais:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 char const *request = "POST http://newbiecontest.n0ne.org/epreuves/prog/prog1.php HTTP/1.1 \r\nHost:newbiecontest.n0ne.org\r\nContent-Length:30\r\n&Pseudo=lepseudo&Pass=lepass\r\n\r\n"
Code : Sélectionner tout - Visualiser dans une fenêtre à part Request header field is missing colon separator.
Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
Mon blog : pragmateek.com
T'es gentil, mais le protocole HTTP est définie par une RFC. Tout est dedans. Ta question n'a rien à voir avec le langage C ni avec le PHP ni avec aucun langage de programmation...Envoyé par seriousme
Développement réseaux
Pas de Wi-Fi à la maison : CPL
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager