Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2018-01-31T10:38:41+01:00Les derniers messages parus sur le forum de Zeste de Savoir.Requêtte GET en c++ , message #1730022018-01-31T10:38:41+01:00Ge0/@Ge0https://zestedesavoir.com/forums/sujet/10213/requette-get-en-c/?page=1#p173002<p>Aaahhh… C’est ta requête qui n’est pas bonne. Essaie ça :</p>
<div><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="n">request</span> <span class="o">+=</span> <span class="s">"GET / HTTP/1.0</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
<span class="n">request</span> <span class="o">+=</span> <span class="s">"Host: zestedesavoir.com</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
<span class="n">request</span> <span class="o">+=</span> <span class="s">"Connection: close</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
<span class="n">request</span> <span class="o">+=</span> <span class="s">"</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
</pre></div>
</td></tr></table></div>
<p>Tu as oublié de préciser le path après ta méthode <code>GET</code>. Utilise <code>HTTP/1.1</code> aussi.</p>Requêtte GET en c++ , message #1729842018-01-31T01:33:35+01:00PixarFilmz-/@PixarFilmz-https://zestedesavoir.com/forums/sujet/10213/requette-get-en-c/?page=1#p172984<p>Je sais vraiment pas comment faire là .. <img alt=":(" src="/static/smileys/triste.png"></p>
<p>J’obtient toujours la même réponse du serveur <abbr title="400 Bad Request">400 Bad Request</abbr></p>
<p>J’envoya ça :</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4</pre></div></td><td class="code"><div class="codehilite"><pre><span></span>request += "GET HTTP/1.0\r\n";
request += "Host: zestedesavoir.com\r\n";
request += "Connection: close\r\n";
request += "\r\n";
</pre></div>
</td></tr></table>
<p>Comme réponse:</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4
5</pre></div></td><td class="code"><div class="codehilite"><pre><span></span> HTTP/1.1 400 Bad Request Server: nginx/1.12.2 Date: Wed, 31 Jan 2018 00:27:20 GMT Content-
Type: text/html Content-Length: 173 Connection: close X-Xss-Protection: 1 X-Content-Type-
Options: nosniff
400 Bad Request
nginx/1.12.2
</pre></div>
</td></tr></table>
<p>Je vois pas ce qui cloche avec la requette..? ip<code>92.243.7.44</code></p>
<div><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="cp">#include</span> <span class="cpf"><WS2tcpip.h></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><iostream></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><Windows.h></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><fstream></span><span class="cp"></span>
<span class="cp">#pragma comment(lib,"ws2_32.lib")</span>
<span class="k">using</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="p">;</span>
<span class="k">using</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
<span class="k">using</span> <span class="n">std</span><span class="o">::</span><span class="n">ofstream</span><span class="p">;</span>
<span class="cp">#define MAX_BUFFLEN 4096</span>
<span class="kt">void</span> <span class="nf">StartUp</span><span class="p">();</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
<span class="c1">//wsaDate ..</span>
<span class="n">StartUp</span><span class="p">();</span>
<span class="c1">//S0cket</span>
<span class="n">SOCKET</span> <span class="n">ListeningSocket</span> <span class="o">=</span> <span class="n">socket</span><span class="p">(</span><span class="n">AF_INET</span><span class="p">,</span> <span class="n">SOCK_STREAM</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">ListeningSocket</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Error at: Socket Creation ListeningSocket().. "</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">);</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Listening Socket Created Succefully!"</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//C0nnection</span>
<span class="c1">//----------ARGUMENTS-----------------------------------------------------------------------</span>
<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">IpAddress</span> <span class="o">=</span> <span class="s">"92.243.7.44"</span><span class="p">;</span>
<span class="k">struct</span> <span class="n">sockaddr_in</span> <span class="n">hint</span><span class="p">;</span>
<span class="n">hint</span><span class="p">.</span><span class="n">sin_family</span> <span class="o">=</span> <span class="n">AF_INET</span><span class="p">;</span>
<span class="n">hint</span><span class="p">.</span><span class="n">sin_port</span> <span class="o">=</span> <span class="n">htons</span><span class="p">(</span><span class="mi">80</span><span class="p">);</span>
<span class="c1">//hint.sin_addr.s_addr = inet_addr(IpAddress); //Don't Use That _'TT_</span>
<span class="n">inet_pton</span><span class="p">(</span><span class="n">AF_INET</span><span class="p">,</span> <span class="n">IpAddress</span><span class="p">.</span><span class="n">c_str</span><span class="p">(),</span> <span class="o">&</span><span class="n">hint</span><span class="p">.</span><span class="n">sin_addr</span><span class="p">);</span>
<span class="c1">//----------ARGUMENTS-----------------------------------------------------------------------</span>
<span class="kt">int</span> <span class="n">ConnectionHandleEstablishement</span> <span class="o">=</span> <span class="n">connect</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">,</span> <span class="p">(</span><span class="k">struct</span> <span class="n">sockaddr</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">hint</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">hint</span><span class="p">));</span>
<span class="k">if</span> <span class="p">(</span><span class="n">ConnectionHandleEstablishement</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Error at : Can't Connect ConnectionHandleEstablishement() Error"</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">);</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Connection established!"</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//----------REQUEST-----------------------------------------------------------------------</span>
<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">request</span><span class="p">;</span>
<span class="n">request</span> <span class="o">+=</span> <span class="s">"GET HTTP/1.0</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
<span class="n">request</span> <span class="o">+=</span> <span class="s">"Host: zestedesavoir.com</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
<span class="n">request</span> <span class="o">+=</span> <span class="s">"Connection: close</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
<span class="n">request</span> <span class="o">+=</span> <span class="s">"</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
<span class="c1">//request += "GET /HTTP/ 1.1 200 OK\r\nHost: zestedesavoir.com\r\n\r\n";</span>
<span class="c1">//----------REQUEST-----------------------------------------------------------------------</span>
<span class="kt">int</span> <span class="n">Connection</span> <span class="o">=</span> <span class="n">send</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">,</span> <span class="n">request</span><span class="p">.</span><span class="n">c_str</span><span class="p">(),</span> <span class="n">request</span><span class="p">.</span><span class="n">length</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">Connection</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Send() sent a different number of bytes than expected "</span> <span class="o"><<</span>
<span class="o">+</span><span class="n">request</span><span class="p">.</span><span class="n">length</span><span class="p">()</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">);</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span> <span class="s">"</span><span class="se">\n</span><span class="s">Request:</span><span class="se">\n</span><span class="s">"</span>
<span class="o"><<</span>
<span class="n">request</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//Get Resp0nse</span>
<span class="kt">char</span> <span class="n">buffer</span><span class="p">[</span><span class="mi">4096</span><span class="p">];</span>
<span class="kt">int</span> <span class="n">resp_length</span> <span class="o">=</span> <span class="n">MAX_BUFFLEN</span><span class="p">;</span>
<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">response</span><span class="p">;</span>
<span class="n">ofstream</span> <span class="n">myfile</span><span class="p">;</span>
<span class="n">myfile</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="s">"out_.html"</span><span class="p">);</span>
<span class="k">do</span>
<span class="p">{</span>
<span class="n">memset</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">4096</span><span class="p">);</span>
<span class="n">resp_length</span> <span class="o">=</span> <span class="n">recv</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="mi">4096</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<span class="n">response</span> <span class="o">+=</span> <span class="n">buffer</span><span class="p">;</span>
<span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">resp_length</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">);</span>
<span class="n">cout</span> <span class="o"><<</span> <span class="n">response</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="n">myfile</span> <span class="o"><<</span> <span class="n">response</span><span class="p">;</span>
<span class="n">myfile</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
<span class="c1">//Close s0cket</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">);</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="n">system</span><span class="p">(</span><span class="s">"PAUSE"</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="kt">void</span> <span class="nf">StartUp</span><span class="p">()</span> <span class="p">{</span>
<span class="n">WSADATA</span> <span class="n">wsaData</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">wsaResult</span> <span class="o">=</span> <span class="n">MAKEWORD</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<span class="kt">int</span> <span class="n">iResult</span> <span class="o">=</span> <span class="n">WSAStartup</span><span class="p">(</span><span class="n">wsaResult</span><span class="p">,</span> <span class="o">&</span><span class="n">wsaData</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">iResult</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Error at: Initializing Winsock.., Winsock 2.2 may be not supported by your system or simply not installed"</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"[Winsock]Status : "</span>
<span class="o"><<</span> <span class="n">wsaData</span><span class="p">.</span><span class="n">szSystemStatus</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</td></tr></table></div>Requêtte GET en c++ , message #1729072018-01-30T08:16:05+01:00Ge0/@Ge0https://zestedesavoir.com/forums/sujet/10213/requette-get-en-c/?page=1#p172907<figure>
<blockquote>
<p>Et comment dois je faire pour envoyer une requête vers <a href="http://zestedesavoir.com">zestedesavoir.com</a> par exemple ou sur un site en local (127.0.0.1) ?</p>
</blockquote>
<figcaption><a href="https://zestedesavoir.com/forums/sujet/10213/demande-requete-get-en-c/?page=1#p172903">PixarFilmz-</a></figcaption>
</figure>
<p>Tu dois d’abord <em>résoudre</em> <a href="http://zestedesavoir.com">zestedesavoir.com</a> (DNS) pour obtenir son adresse IP et changer ta requête GET pour y mettre l’Host qui va bien.</p>
<p>Pour <code>127.0.0.1</code>, pas de résolution à faire, mais tu dois t’assurer que tu as un serveur web qui tourne en local pour que cela fonctionne.</p>
<p>Essaie de voir de ce côté-là : <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms682016(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/windows/desktop/ms682016(v=vs.85).aspx</a></p>Requêtte GET en c++ , message #1729042018-01-30T02:29:53+01:00PixarFilmz-/@PixarFilmz-https://zestedesavoir.com/forums/sujet/10213/requette-get-en-c/?page=1#p172904<figure>
<blockquote>
<p>....</p>
<p>Résolu, il fallait ajouter un <code><=</code> au lieu de <code><</code> seulement a la ligne 88 [Résolu]</p>
<p>Mais j’ai tout de même une quéstion, est-ce une bonne façon d’envoyer une requête GET de cette façon, bien structurer ? </p>
<p>J’ai ça comment réponse :</p>
<p><code>HTTP/1.0 400 Bad Request
Content-Length: 54
Content-Type: text/html; charset=UTF-8
Date: Tue, 30 Jan 2018 00:24:57 GMT</code></p>
<p>Et comment dois je faire pour envoyer une requête vers <a href="http://zestedesavoir.com">zestedesavoir.com</a> par exemple ou sur un site en local (127.0.0.1) ?</p>
</blockquote>
<figcaption><a href="https://zestedesavoir.com/forums/sujet/10213/demande-requete-get-en-c/?page=1#p172903">PixarFilmz-</a></figcaption>
</figure>Requêtte GET en c++ , message #1729032018-01-30T01:24:14+01:00PixarFilmz-/@PixarFilmz-https://zestedesavoir.com/forums/sujet/10213/requette-get-en-c/?page=1#p172903<p>....</p>
<p>Résolu, il fallait ajouter un <code><=</code> au lieu de <code><</code> seulement a la ligne 88</p>
<p>Mais j’ai tout de même une quéstion, est-ce une bonne façon d’envoyer une requête GET de cette façon, bien structurer ? </p>
<p>J’ai ça comment réponse :</p>
<p><code>HTTP/1.0 400 Bad Request
Content-Length: 54
Content-Type: text/html; charset=UTF-8
Date: Tue, 30 Jan 2018 00:24:57 GMT</code></p>
<p>Et comment dois je faire pour envoyer une requête vers <a href="http://zestedesavoir.com">zestedesavoir.com</a> par exemple ou sur un site en local (127.0.0.1) ?</p>
<p>Résulat (iamawesome.com, 66.33.196.149) :</p>
<div><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="cp"><!doctype html></span>
<span class="p"><</span><span class="nt">html</span><span class="p">></span>
<span class="p"><</span><span class="nt">head</span><span class="p">></span>
<span class="p"><</span><span class="nt">title</span><span class="p">></span>Site not found <span class="ni">&middot;</span> DreamHost<span class="p"></</span><span class="nt">title</span><span class="p">></span>
<span class="p"><</span><span class="nt">meta</span> <span class="na">http-equiv</span><span class="o">=</span><span class="s">"cache-control"</span> <span class="na">content</span><span class="o">=</span><span class="s">"no-cache"</span> <span class="p">/></span>
<span class="p"><</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">"description"</span> <span class="na">content</span><span class="o">=</span><span class="s">"The owner of this domain has not yet uploaded their website."</span> <span class="p">/></span>
<span class="p"><</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">"stylesheet"</span> <span class="na">href</span><span class="o">=</span><span class="s">"https://securendn.a.ssl.fastly.net/newpanel/css/singlepage.css"</span> <span class="p">/></span>
<span class="p"></</span><span class="nt">head</span><span class="p">></span>
<span class="p"><</span><span class="nt">body</span><span class="p">></span>
<span class="p"><</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">"page page-missing"</span><span class="p">></span>
<span class="p"><</span><span class="nt">h1</span><span class="p">></span>Site Not Found<span class="p"></</span><span class="nt">h1</span><span class="p">></span>
<span class="p"><</span><span class="nt">p</span><span class="p">></span>Well, this is awkward. The site you're looking for is not here.<span class="p"></</span><span class="nt">p</span><span class="p">></span>
<span class="p"><</span><span class="nt">p</span><span class="p">><</span><span class="nt">small</span><span class="p">></span>Is this your site? <span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"http://wiki.dreamhost.com/Site_not_found"</span><span class="p">></span>Get more info<span class="p"></</span><span class="nt">a</span><span class="p">></span> or <span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"https://panel.dreamhost.com/index.cgi?tree=support.msg"</span><span class="p">></span>contact support<span class="p"></</span><span class="nt">a</span><span class="p">></span>.<span class="p"></</span><span class="nt">small</span><span class="p">></</span><span class="nt">p</span><span class="p">></span>
<span class="p"><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"http://www.dreamhost.com/"</span> <span class="na">class</span><span class="o">=</span><span class="s">"logo"</span><span class="p">></span>DreamHost<span class="p"></</span><span class="nt">a</span><span class="p">></span>
<span class="p"></</span><span class="nt">div</span><span class="p">></span>
<span class="p"></</span><span class="nt">body</span><span class="p">></span>
<span class="p"></</span><span class="nt">html</span><span class="p">></span>
`
</pre></div>
</td></tr></table></div>
<p><a href="http://image.noelshack.com/fichiers/2018/05/2/1517276896-http-get-error-1.png">http://image.noelshack.com/fichiers/2018/05/2/1517276896-http-get-error-1.png</a></p>
<p><a href="http://www.noelshack.com/2018-05-2-1517276896-http-get-error-1.png">http://www.noelshack.com/2018-05-2-1517276896-http-get-error-1.png</a></p>
<p>Dernière version :</p>
<div><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="cp">#include</span> <span class="cpf"><WS2tcpip.h></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><iostream></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><Windows.h></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><fstream></span><span class="cp"></span>
<span class="cp">#pragma comment(lib,"ws2_32.lib")</span>
<span class="k">using</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="p">;</span>
<span class="k">using</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
<span class="k">using</span> <span class="n">std</span><span class="o">::</span><span class="n">ofstream</span><span class="p">;</span>
<span class="cp">#define MAX_BUFFLEN 4096</span>
<span class="kt">void</span> <span class="nf">startUp</span><span class="p">();</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
<span class="c1">//wsaDate ..</span>
<span class="n">startUp</span><span class="p">();</span>
<span class="c1">//S0cket</span>
<span class="n">SOCKET</span> <span class="n">ListeningSocket</span> <span class="o">=</span> <span class="n">socket</span><span class="p">(</span><span class="n">AF_INET</span><span class="p">,</span> <span class="n">SOCK_STREAM</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">ListeningSocket</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Error at: Socket Error.. "</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">);</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Listening Socket Created Succefully!"</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//C0nnection</span>
<span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="n">IpAddress</span> <span class="o">=</span> <span class="s">"66.33.196.149"</span><span class="p">;</span>
<span class="k">struct</span> <span class="n">sockaddr_in</span> <span class="n">hint</span><span class="p">;</span>
<span class="n">hint</span><span class="p">.</span><span class="n">sin_family</span> <span class="o">=</span> <span class="n">AF_INET</span><span class="p">;</span>
<span class="n">hint</span><span class="p">.</span><span class="n">sin_port</span> <span class="o">=</span> <span class="n">htons</span><span class="p">(</span><span class="mi">80</span><span class="p">);</span>
<span class="c1">//hint.sin_addr.s_addr = inet_addr(IpAddress); //Don't Use That _'TT_</span>
<span class="n">inet_pton</span><span class="p">(</span><span class="n">AF_INET</span><span class="p">,</span> <span class="n">IpAddress</span><span class="p">,</span> <span class="o">&</span><span class="n">hint</span><span class="p">.</span><span class="n">sin_addr</span><span class="p">);</span>
<span class="n">bind</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">,</span> <span class="p">(</span><span class="n">sockaddr</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">hint</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">hint</span><span class="p">));</span>
<span class="kt">int</span> <span class="n">ConnectionHandleEst</span> <span class="o">=</span> <span class="n">connect</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">,</span> <span class="p">(</span><span class="k">struct</span> <span class="n">sockaddr</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">hint</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">hint</span><span class="p">));</span>
<span class="k">if</span> <span class="p">(</span><span class="n">ConnectionHandleEst</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Error at : Can't connect to server Error "</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">);</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Connection established!"</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//Request</span>
<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">request</span><span class="p">;</span>
<span class="n">request</span> <span class="o">+=</span> <span class="s">"GET /HTTP/1.0</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
<span class="n">request</span> <span class="o">+=</span> <span class="s">"Host: iamawesome.com</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
<span class="c1">//request += "Connection: keep-alive";</span>
<span class="n">request</span> <span class="o">+=</span> <span class="s">"</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">Connection</span> <span class="o">=</span> <span class="n">send</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">,</span> <span class="n">request</span><span class="p">.</span><span class="n">c_str</span><span class="p">(),</span> <span class="n">request</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">Connection</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Send() sent a different number of bytes than expected "</span> <span class="o"><<</span>
<span class="o">+</span><span class="n">request</span><span class="p">.</span><span class="n">length</span><span class="p">()</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">);</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span> <span class="s">"</span><span class="se">\n</span><span class="s">Content:</span><span class="se">\n</span><span class="s">"</span>
<span class="o"><<</span>
<span class="n">request</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//Get Resp0nse</span>
<span class="kt">char</span> <span class="n">buffer</span><span class="p">[</span><span class="mi">4096</span><span class="p">];</span>
<span class="kt">int</span> <span class="n">resp_length</span><span class="p">;</span>
<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">response</span><span class="p">;</span>
<span class="n">ofstream</span> <span class="n">myfile</span><span class="p">;</span>
<span class="n">myfile</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="s">"out_.html"</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">Connection</span> <span class="o">!=</span> <span class="n">SOCKET_ERROR</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">do</span>
<span class="p">{</span>
<span class="c1">//ZeroMemory(buffer, 4096);</span>
<span class="n">memset</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">4096</span><span class="p">);</span>
<span class="n">resp_length</span> <span class="o">=</span> <span class="n">recv</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="mi">4096</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<span class="n">response</span> <span class="o">+=</span> <span class="n">buffer</span><span class="p">;</span>
<span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">resp_length</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">);</span>
<span class="p">}</span>
<span class="n">cout</span> <span class="o"><<</span> <span class="n">response</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="n">myfile</span> <span class="o"><<</span> <span class="n">response</span><span class="p">;</span>
<span class="n">myfile</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
<span class="c1">//Close s0cket</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">);</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="n">system</span><span class="p">(</span><span class="s">"PAUSE"</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="kt">void</span> <span class="nf">startUp</span><span class="p">()</span> <span class="p">{</span>
<span class="n">WSADATA</span> <span class="n">wsaData</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">wsaResult</span> <span class="o">=</span> <span class="n">MAKEWORD</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<span class="kt">int</span> <span class="n">iResult</span> <span class="o">=</span> <span class="n">WSAStartup</span><span class="p">(</span><span class="n">wsaResult</span><span class="p">,</span> <span class="o">&</span><span class="n">wsaData</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">iResult</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Error at: Initializing Winsock.., Winsock 2.2 may be not supported by your system or simply not installed"</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"[Winsock]Status : "</span>
<span class="o"><<</span> <span class="n">wsaData</span><span class="p">.</span><span class="n">szSystemStatus</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</td></tr></table></div>Requêtte GET en c++ , message #1729022018-01-30T01:07:09+01:00PixarFilmz-/@PixarFilmz-https://zestedesavoir.com/forums/sujet/10213/requette-get-en-c/?page=1#p172902<p>Bonjour, j’essaye depuis quelques heures de crée un petit programme pour faire des requête http et afficher le contenu d’une page web, dans ce cas, <strong>google.ca</strong> (.ca = Canada). Le résultat espéré final serait de pouvoir télécharger des vidéos sur youtube.. Un peu loin du but <img alt=":lol:" src="/static/smileys/rire.gif"> </p>
<p>Pas si pire pour un débutant.. <img alt=":D" src="/static/smileys/heureux.png"></p>
<p>Donc, <br>
le problème c’est que je n’arrive pas a afficher le code source de la page.. xd vous allez peut-être me dire que tu aurais pu utiliser boost::asio ou même cURL mais je trouve qu’on utilisant un système de socket() brut, on apprend mieux à connaitre ce qui se passe en dessous du moteur. Je pense que le problème viens de la requête que j’ai faite, surement mal écrite; Si quelqu’un pourrais me l’expliquer <img alt=":)" src="/static/smileys/smile.png"> </p>
<p>Code d’erreur (merci debug): "Send() send a different number of bytes than expected 40" ligne 76-77
(Le programme se compile)</p>
<p>Merci <img alt=":P" src="/static/smileys/langue.png"></p>
<p>C0de :</p>
<div><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="cp">#include</span> <span class="cpf"><WS2tcpip.h></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><iostream></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><Windows.h></span><span class="cp"></span>
<span class="cp">#pragma comment(lib,"ws2_32.lib")</span>
<span class="k">using</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="p">;</span>
<span class="k">using</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
<span class="kt">void</span> <span class="nf">startUp</span><span class="p">();</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
<span class="c1">//wsaDate ..</span>
<span class="n">startUp</span><span class="p">();</span>
<span class="c1">//S0cket</span>
<span class="n">SOCKET</span> <span class="n">ListeningSocket</span> <span class="o">=</span> <span class="n">socket</span><span class="p">(</span><span class="n">AF_INET</span><span class="p">,</span> <span class="n">SOCK_STREAM</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">ListeningSocket</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Error at: Socket Error.. "</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">);</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Listening Socket Created Succefully!"</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//C0nnection</span>
<span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="n">IpAddress</span> <span class="o">=</span> <span class="s">"66.33.196.149"</span><span class="p">;</span>
<span class="k">struct</span> <span class="n">sockaddr_in</span> <span class="n">hint</span><span class="p">;</span>
<span class="n">hint</span><span class="p">.</span><span class="n">sin_family</span> <span class="o">=</span> <span class="n">AF_INET</span><span class="p">;</span>
<span class="n">hint</span><span class="p">.</span><span class="n">sin_port</span> <span class="o">=</span> <span class="n">htons</span><span class="p">(</span><span class="mi">80</span><span class="p">);</span>
<span class="c1">//hint.sin_addr.s_addr = inet_addr(IpAddress); //Don't Use That _'TT_</span>
<span class="n">inet_pton</span><span class="p">(</span><span class="n">AF_INET</span><span class="p">,</span> <span class="n">IpAddress</span><span class="p">,</span> <span class="o">&</span><span class="n">hint</span><span class="p">.</span><span class="n">sin_addr</span><span class="p">);</span>
<span class="n">bind</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">,</span> <span class="p">(</span><span class="n">sockaddr</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">hint</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">hint</span><span class="p">));</span>
<span class="kt">int</span> <span class="n">ConnectionHandleEst</span> <span class="o">=</span> <span class="n">connect</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">,</span> <span class="p">(</span><span class="k">struct</span> <span class="n">sockaddr</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">hint</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">hint</span><span class="p">));</span>
<span class="k">if</span> <span class="p">(</span><span class="n">ConnectionHandleEst</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Error at : Can't connect to server Error "</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">);</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Connection established!"</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//Request</span>
<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">request</span><span class="p">;</span>
<span class="n">request</span> <span class="o">+=</span> <span class="s">"GET /HTTP/1.1</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
<span class="n">request</span> <span class="o">+=</span> <span class="s">"Host: iamawesome.com</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
<span class="c1">//request += "Connection: keep-alive";</span>
<span class="n">request</span> <span class="o">+=</span> <span class="s">"</span><span class="se">\r\n</span><span class="s">"</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">Connection</span> <span class="o">=</span> <span class="n">send</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">,</span> <span class="n">request</span><span class="p">.</span><span class="n">c_str</span><span class="p">(),</span> <span class="n">request</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">Connection</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Send() sent a different number of bytes than expected "</span> <span class="o"><<</span>
<span class="o">+</span><span class="n">request</span><span class="p">.</span><span class="n">length</span><span class="p">()</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">);</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//Get Resp0nse</span>
<span class="kt">char</span> <span class="n">buffer</span><span class="p">[</span><span class="mi">4096</span><span class="p">];</span>
<span class="kt">int</span> <span class="n">resp_length</span><span class="p">;</span>
<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">response</span><span class="p">;</span>
<span class="k">while</span> <span class="p">(</span><span class="nb">true</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">resp_length</span> <span class="o">=</span> <span class="n">recv</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="mi">4096</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">resp_length</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">response</span> <span class="o">+=</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="n">buffer</span><span class="p">).</span><span class="n">substr</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">resp_length</span><span class="p">);</span>
<span class="p">}</span>
<span class="n">cout</span> <span class="o"><<</span> <span class="n">response</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="c1">//Close s0cket</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">ListeningSocket</span><span class="p">);</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="n">system</span><span class="p">(</span><span class="s">"PAUSE"</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="kt">void</span> <span class="nf">startUp</span><span class="p">()</span> <span class="p">{</span>
<span class="n">WSADATA</span> <span class="n">wsaData</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">wsaResult</span> <span class="o">=</span> <span class="n">MAKEWORD</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<span class="kt">int</span> <span class="n">iResult</span> <span class="o">=</span> <span class="n">WSAStartup</span><span class="p">(</span><span class="n">wsaResult</span><span class="p">,</span> <span class="o">&</span><span class="n">wsaData</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">iResult</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Error at: Initializing Winsock.., Winsock 2.2 may be not supported by your system or simply not installed"</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"[Winsock]Status : "</span>
<span class="o"><<</span> <span class="n">wsaData</span><span class="p">.</span><span class="n">szSystemStatus</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</td></tr></table></div>C/C++ Erreur Compilation de Winsock , message #1714912018-01-15T11:29:10+01:00Ksass`Peuk/@Ksass%60Peukhttps://zestedesavoir.com/forums/sujet/10111/cc-erreur-compilation-de-winsock/?page=1#p171491<p>(Utiliser Winsock en C++, c’est un peu tordu, il faut tout wrapper pour être robuste aux exceptions, ce qui demande pas mal de boulot pas très intéressant, là où une lib C++ aurait déjà fait le boulot pour nous, boost ASIO par exemple).</p>C/C++ Erreur Compilation de Winsock , message #1714812018-01-15T08:21:41+01:00ache/@achehttps://zestedesavoir.com/forums/sujet/10111/cc-erreur-compilation-de-winsock/?page=1#p171481<p>Très certainement oui, mais là ce n’est pas le problème.</p>
<p>Ici, c’est un problème de définition. Si c’était que GCC n’arrivait pas à linker on aurait un problème au niveau du linker. Ça arrivera peut-être, mais plus tard.</p>C/C++ Erreur Compilation de Winsock , message #1714802018-01-15T08:20:00+01:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/10111/cc-erreur-compilation-de-winsock/?page=1#p171480<p>Il n’y a pas besoin de passer un argument à GCC pour dire au linker où aller chercher tout ça ?</p>C/C++ Erreur Compilation de Winsock , message #1714792018-01-15T08:09:56+01:00Ge0/@Ge0https://zestedesavoir.com/forums/sujet/10111/cc-erreur-compilation-de-winsock/?page=1#p171479<p>Essaie avec <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/cc805843(v=vs.85).aspx">InetNtop</a>.</p>C/C++ Erreur Compilation de Winsock , message #1714782018-01-15T03:14:43+01:00PixarFilmz-/@PixarFilmz-https://zestedesavoir.com/forums/sujet/10111/cc-erreur-compilation-de-winsock/?page=1#p171478<figure>
<blockquote>
<p>Je ne suis pas sur Windows, mais la MSDN me donne ça comme commentaire :</p>
<figure>
<blockquote>
<p>Possible values for the address family are defined in the Ws2def.h header file. Note that the Ws2def.h header file is automatically included in Winsock2.h, and should never be used directly. Note that the values for the AF_ address family and PF_ protocol family constants are identical (for example, AF_INET and PF_INET), so either constant can be used.</p>
</blockquote>
<figcaption><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/cc805843(v=vs.85).aspx">MSDN</a></figcaption>
</figure>
<p>Bref, ça parle de header que tu n’inclues pas. Essaye d’inclure <code>Winsock2.h</code> par exemple.</p>
</blockquote>
<figcaption><a href="https://zestedesavoir.com/forums/sujet/10111/cc-erreur-compilation-de-winsock/?page=1#p171477">ache</a></figcaption>
</figure>
<p>En rajoutant <code>Winsock2.h</code>
Erreur: </p>
<p><code>C:\Users\AdminHP\source\Projects_\Communication\Winsock_Server.cpp: In function 'int main()':
C:\Users\AdminHP\source\Projects_\Communication\Winsock_Server.cpp:85:58: error: 'inet_ntop' was not declared in this scope
inet_ntop(AF_INET, &client.sin_addr, host, NI_MAXHOST);
^</code></p>
<p>En rajoutant ceux dans la doc de <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms737593(v=vs.85).aspx">MSDN</a>
<code><windows.h></code>
<code><winsock2.></code>
<code><ws2tcpip.></code>
<code><stdlib.></code>
<code><stdio.h></code>:</p>
<p><code>.\Winsock_Server.cpp: In function 'int main()':
.\Winsock_Server.cpp:88:58: error: 'inet_ntop' was not declared in this scope
inet_ntop(AF_INET, &client.sin_addr, host, NI_MAXHOST);</code></p>
<p>En gros, avec tous ces headers :</p>
<p><iostream>
<winsock2.h>
<windows.h>
<ws2tcpip.h>
<stdlib.h>
<stdio.h>
<string>
<Winsock2.h></p>
<p>Ça fonctionne pas.</p>C/C++ Erreur Compilation de Winsock , message #1714772018-01-15T03:05:25+01:00ache/@achehttps://zestedesavoir.com/forums/sujet/10111/cc-erreur-compilation-de-winsock/?page=1#p171477<p>Je ne suis pas sur Windows, mais la MSDN me donne ça comme commentaire :</p>
<figure>
<blockquote>
<p>Possible values for the address family are defined in the Ws2def.h header file. Note that the Ws2def.h header file is automatically included in Winsock2.h, and should never be used directly. Note that the values for the AF_ address family and PF_ protocol family constants are identical (for example, AF_INET and PF_INET), so either constant can be used.</p>
</blockquote>
<figcaption><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/cc805843(v=vs.85).aspx">MSDN</a></figcaption>
</figure>
<p>Bref, ça parle de header que tu n’inclues pas. Essaye d’inclure <code>Winsock2.h</code> par exemple.</p>C/C++ Erreur Compilation de Winsock , message #1714752018-01-15T02:47:28+01:00PixarFilmz-/@PixarFilmz-https://zestedesavoir.com/forums/sujet/10111/cc-erreur-compilation-de-winsock/?page=1#p171475<p>Bonjour, </p>
<p>Récemment, j’ai changé d’IDE, de Visual Studio à gcc (command line). J’avais fais un petit programme winsock pour ’winsocker’.. <img alt=":euh:" src="/static/smileys/unsure.gif"></p>
<p>Le code marchait parfaitement sur visual studio, par contre, en le compilant avec gcc :</p>
<p><code>gcc .\nom_du_programme.cpp</code> </p>
<p>sur windows power shell, j’obtient la belle erreur :</p>
<blockquote>
<p>.\Winsock_Server.cpp: In function ’int main()’:
.\Winsock_Server.cpp:84:58: error: ’inet_ntop’ was not declar
inet_ntop(AF_INET, &client.sin_addr, host, NI_MAXHOST);</p>
</blockquote>
<p>Si qulqu’un pouvait m’aider <img alt=":D" src="/static/smileys/heureux.png"></p>
<p>C0de: </p>
<div><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="cp">#include</span> <span class="cpf"><iostream></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><WS2tcpip.h></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><string></span><span class="cp"></span>
<span class="cp">#pragma comment (lib, "ws2_32.lib")</span>
<span class="k">using</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="p">;</span>
<span class="k">using</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
<span class="k">using</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">;</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
<span class="p">{</span>
<span class="c1">//---Initialze Winsock---</span>
<span class="n">WSADATA</span> <span class="n">wsdata</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">iResult</span> <span class="o">=</span> <span class="n">WSAStartup</span><span class="p">(</span><span class="n">MAKEWORD</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="o">&</span><span class="n">wsdata</span><span class="p">);</span> <span class="c1">//MAKEWORD(2, 2) |> request version 2.2 of winsock</span>
<span class="k">if</span> <span class="p">(</span><span class="n">iResult</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">){</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Error at: Initializing Winsock.., Winsock 2.2 may be not supported by your system or simply not installed"</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Winsock is working,</span><span class="se">\n</span><span class="s">"</span>
<span class="s">"Status : "</span>
<span class="o"><<</span> <span class="n">wsdata</span><span class="p">.</span><span class="n">szSystemStatus</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//---Create a socket---</span>
<span class="n">SOCKET</span> <span class="n">listeningSock</span> <span class="o">=</span> <span class="n">socket</span><span class="p">(</span><span class="n">AF_INET</span><span class="p">,</span> <span class="n">SOCK_STREAM</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">listeningSock</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Error at: Socket Error.. "</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">listeningSock</span><span class="p">);</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//---Bind ip addr and port to a socket---</span>
<span class="n">sockaddr_in</span> <span class="n">hint</span><span class="p">;</span>
<span class="n">hint</span><span class="p">.</span><span class="n">sin_family</span> <span class="o">=</span> <span class="n">AF_INET</span><span class="p">;</span><span class="c1">//IPv4</span>
<span class="n">hint</span><span class="p">.</span><span class="n">sin_port</span> <span class="o">=</span> <span class="n">htons</span><span class="p">(</span><span class="mi">54000</span><span class="p">);</span><span class="c1">//Port</span>
<span class="n">hint</span><span class="p">.</span><span class="n">sin_addr</span><span class="p">.</span><span class="n">S_un</span><span class="p">.</span><span class="n">S_addr</span> <span class="o">=</span> <span class="n">INADDR_ANY</span><span class="p">;</span><span class="c1">//All ip's can connect</span>
<span class="n">bind</span><span class="p">(</span><span class="n">listeningSock</span><span class="p">,</span> <span class="p">(</span><span class="n">sockaddr</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">hint</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">hint</span><span class="p">));</span>
<span class="c1">//---Tell Winsock socket is for listening---</span>
<span class="n">listen</span><span class="p">(</span><span class="n">listeningSock</span><span class="p">,</span> <span class="n">SOMAXCONN</span><span class="p">);</span>
<span class="c1">//---Wait for connection---</span>
<span class="n">sockaddr_in</span> <span class="n">client</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">clientsize</span> <span class="o">=</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">client</span><span class="p">);</span>
<span class="n">SOCKET</span> <span class="n">ClientSocket</span> <span class="o">=</span> <span class="n">accept</span><span class="p">(</span><span class="n">listeningSock</span><span class="p">,</span> <span class="p">(</span><span class="n">sockaddr</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">client</span><span class="p">,</span> <span class="o">&</span><span class="n">clientsize</span><span class="p">)</span> <span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="n">ClientSocket</span> <span class="o">==</span> <span class="n">INVALID_SOCKET</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="s">"Error at: Connection.. "</span>
<span class="o"><<</span> <span class="n">wsdata</span><span class="p">.</span><span class="n">szSystemStatus</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="kt">char</span> <span class="n">host</span><span class="p">[</span><span class="n">NI_MAXHOST</span><span class="p">];</span>
<span class="kt">char</span> <span class="n">service</span><span class="p">[</span><span class="n">NI_MAXHOST</span><span class="p">];</span>
<span class="n">ZeroMemory</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">NI_MAXHOST</span><span class="p">);</span>
<span class="n">ZeroMemory</span><span class="p">(</span><span class="n">service</span><span class="p">,</span> <span class="n">NI_MAXHOST</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">getnameinfo</span><span class="p">((</span><span class="n">sockaddr</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">client</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">client</span><span class="p">),</span> <span class="n">host</span><span class="p">,</span><span class="n">NI_MAXHOST</span><span class="p">,</span> <span class="n">service</span><span class="p">,</span> <span class="n">NI_MAXSERV</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span> <span class="n">host</span> <span class="o"><<</span> <span class="s">" is connected on port "</span> <span class="o"><<</span> <span class="n">service</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span> <span class="p">{</span>
<span class="n">inet_ntop</span><span class="p">(</span><span class="n">AF_INET</span><span class="p">,</span> <span class="o">&</span><span class="n">client</span><span class="p">.</span><span class="n">sin_addr</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">NI_MAXHOST</span><span class="p">);</span><span class="c1">//<-----------------ICICICI!!!</span>
<span class="n">cout</span> <span class="o"><<</span> <span class="n">host</span> <span class="o"><<</span> <span class="s">" is connected on port "</span> <span class="o"><<</span> <span class="n">ntohs</span><span class="p">(</span><span class="n">client</span><span class="p">.</span><span class="n">sin_port</span><span class="p">)</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//---Close listening socket---</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">listeningSock</span><span class="p">);</span>
<span class="c1">//---While loop: accept and echo message back to client (test)---</span>
<span class="kt">char</span> <span class="n">buffer</span><span class="p">[</span><span class="mi">4096</span><span class="p">];</span>
<span class="k">while</span> <span class="p">(</span><span class="nb">true</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">ZeroMemory</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="mi">4096</span><span class="p">);</span>
<span class="c1">//Wait client send data</span>
<span class="kt">int</span> <span class="n">bytesReceived</span> <span class="o">=</span> <span class="n">recv</span><span class="p">(</span><span class="n">ClientSocket</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="mi">4096</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">bytesReceived</span> <span class="o">==</span> <span class="n">SOCKET_ERROR</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span>
<span class="n">host</span> <span class="o"><<</span>
<span class="s">" is now Disconnected.. "</span>
<span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="n">bytesReceived</span> <span class="o">==</span><span class="mi">0</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">cout</span> <span class="o"><<</span> <span class="s">"Error at: recevieiving information.."</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">cout</span> <span class="o"><<</span> <span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">bytesReceived</span><span class="p">)</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="c1">//Echo message back |> client</span>
<span class="n">send</span><span class="p">(</span><span class="n">ClientSocket</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="n">bytesReceived</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<span class="c1">//Echo client message |> serv console</span>
<span class="n">cout</span> <span class="o"><<</span> <span class="s">"["</span><span class="o"><<</span> <span class="n">host</span> <span class="o"><<</span> <span class="s">"]"</span><span class="o"><<</span> <span class="s">"[+]"</span> <span class="o"><<</span> <span class="n">buffer</span> <span class="o"><<</span> <span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">//---Close socket---</span>
<span class="n">closesocket</span><span class="p">(</span><span class="n">ClientSocket</span><span class="p">);</span>
<span class="c1">//---Clean up Winsock---</span>
<span class="n">WSACleanup</span><span class="p">();</span>
<span class="n">system</span><span class="p">(</span><span class="s">"pause"</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span><span class="c1">//Cyka Blyt</span>
<span class="p">}</span>
<span class="err">`</span>
</pre></div>
</td></tr></table></div>